Jackson / Hibernate, métodos meta get y serialización

Tenemos muchas clases de entidades de hibernación con relaciones anidadas. Estoy tratando de encontrar la mejor manera de convertir una entidad dada a un formato json equivalente.

Sé de JsonIgnore, Jackson mixins y JsonFilters y he estado experimentando con ellos.

Los desafíos que enfrentamos son los siguientes

  1. Los objetos relacionados entre sí mediante OneToMany / JoinColumn o anotaciones similares crean una recursión infinita.

  2. Utilidad o meta métodos. Jackson parece ir por métodos getter y no por campos. Algunos de los métodos son métodos "meta" que no están asociados con ninguna columna. El método getTotal de ejemplo puede ser la suma de valores de un par de campos reales sin tener un campo total real. Caso similar para otros casos como getIncomeAccounts que filtra las cuentas según algunos criterios.

Jackson Filter que escribí ayuda un poco: comprueba si el campo de clase existe según el nombre de propiedad de Jackson. También comprueba si hay anotaciones como la anotación JoinColumn para evitar la recurrencia si el campo existe.

¿Hay alguna forma de obtener metadatos de hibernación y usarlos en mis filtros? Básicamente para un objeto de entidad dado, estoy interesado en saber si la propiedad que Jackson desea serializar se asignará a una columna y se serializará solo si hay un valor de columna asociado con ella. Hibernate ciertamente conoce las propiedades y las asignaciones de columnas.

Las opciones de mixins y jsonignore son viables, pero luego dependemos de que el desarrollador individual recuerde colocar las anotaciones en el lugar apropiado. Por lo general, las anotaciones olvidadas se descubren demasiado tarde cuando realmente queremos obtener los datos exportados para analizar algún problema y crear un caso de prueba localmente.

Respuesta 1

Lo que generalmente hago es mapear Entidades a DTOs manualmente, o con la ayuda de herramientas como MapStruct .
Desafortunadamente, esto le dará la máxima flexibilidad, con un poco de sobrecarga al principio.
Sin embargo, con el tiempo verás que valió la pena.

Jackson, GSON y otras herramientas de serialización obviamente están limitadas en cuanto a lo que pueden hacer de forma inmediata, y este tipo de personalización requiere demasiado trabajo, en mi opinión, a la vez que es difícil de entender y mantener.

Mantenlo simple.

Respuesta: 2

Tengo la fecha en el formato de cadena como este "Sábado 8 de septiembre 10:13:09 GMT + 0530 2012", ¿alguien puede ayudarme a convertir esta fecha de cadena en un objeto de clase Fecha.

La última versión de spring-boot-starter-jdbc contiene la versión spring-data-jdbc 1.0.5. Estoy tratando de actualizar la versión de spring-data-jdbc. Pero la consola me muestra un problema. Causado por: org ....

Necesito hacer lo siguiente: Obtener una imagen con la cámara de Android ... Quite el fondo de la imagen y colóquelo en otro fondo guárdelo. Estoy haciendo esos 3 pasos bien ... El problema es ...

Estoy usando org.slf4j en mi módulo para fines de registro. He encontrado un problema interesante en mi archivo de registro en el entorno de producción. logger.info ("Actualizando usuario {}", uuid); salida para esto ...