Solución:
Simplemente agregué las anotaciones JsonSerialize y JsonDeserialize.
@Transient
@JsonSerialize
@JsonDeserialize
private String myField;
Al contrario de lo que les estaba diciendo en los comentarios, parece que Jackson se preocupa por las anotaciones JPA cuando se usa para serializar instancias de clases de entidad gracias al módulo Hibernate de Jackson.
Dentro de ese módulo, hay un HibernateAnnotationIntrospector al que la documentación se refiere como un
AnnotationIntrospector simple que agrega soporte para usar Transient para denotar campos ignorables (junto con anotaciones Jackson y / o JAXB).
Y como puede ver aquí, el comportamiento predeterminado de Jackson es verificar cualquier @Transient
anotación que puede encontrar.
Entonces, al final, su problema se puede resolver de cualquiera de esas 3 formas:
- Configure Jackson (usando el método setUseTransient de HibernateAnnotationIntrospector) para deshabilitar la verificación de
@Transient
anotaciones (consulte esta respuesta para obtener detalles de implementación). - Utilice otro objeto que
PublicationVO
como el resultado devuelto de sugetPublicationDetailsJSON
método. Tendrá que copiar las propiedades de su objeto de valor al objeto que se devuelve en algún momento. - Eliminar el
@Transient
anotación y persistencia de la propiedad (pero lo entendería si esa no es una opción para usted, ya que probablemente tenga una buena razón para haber hecho que esta propiedad sea JPA-transitoria en primer lugar).
Salud
Solo para agregar más a la respuesta proporcionada por m4rtin
Fui con el primer enfoque: configurar Jackson (usando el método setUseTransient de HibernateAnnotationIntrospector) para deshabilitar la verificación de anotaciones @Transient.
En mi proyecto seguí, tuve que seguir el siguiente hilo para evitar la serialización de jackson en objetos perezosos no recuperados Evitar la serialización de Jackson en objetos perezosos no recuperados
Para configurar mi proyecto para que no ignore las anotaciones transitorias, configuro el Hibernate4Module de la siguiente manera
Hibernate4Module hm = new Hibernate4Module();
hm.disable(Feature.USE_TRANSIENT_ANNOTATION);
Gracias por tu ayuda en este m4rtin