¿Hay una configuración en Hibernar a ignorar los valores nulos de las propiedades al guardar un objeto de hibernación?¿Cómo puedo evitar que Hibernate actualice los valores NULL?
NOTA
En mi caso estoy de-serializar JSON a un Hibernate Pojo a través de Jackson.
El JSON solo contiene algunos de los campos del Pojo. Si guardo el Pojo, los campos que no estaban en el JSON son nulos en el Pojo e hibernate los ACTUALIZA.
Encontré la configuración updateable=false
, pero esto no es una solución al 100%. http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-mapping-property
Tal vez alguien tiene otra idea ...
NOTA 2:
De acuerdo con la hibernación Docs la dynamicUpdate
anotación hace exactamente eso
dynamicInsert/dynamicUpdate (el valor predeterminado es falso):
especifica que INSERT/UPDAT E SQL debe generarse en tiempo de ejecución y contener solo las columnas cuyos valores no son nulos.
http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#mapping-declaration-class
divertido suficiente si lo definen en XML a través de dynamic-update
el docu no mencionar el hanlding de valores NULL.
dinámica de actualización (opcional - por defecto es false):
especifica que SQL UPDATE debe ser> generada en tiempo de ejecución y puede contener sólo las columnas cuyos valores han cambiado.
Debido al hecho de que estoy usando dos anotaciones y configuración XML, hibernación parece que ignora mi dynamicUpdate=true
anotación.
dinámica se puede utilizar actualización para evitar propiedades que vienen en SQL que no han sido actualizados pero en general se aconseja el uso de esta opción sólo cuando la entidad tiene también propiedades (columnas> 50) [referencia: Java Persistence con la edición de Hibernate 2006]. @hvgotcodes tiene razón al señalar que no es necesario mapear los campos si nunca van a persistir. – frictionlesspulley