如何防止Hibernate更新NULL值

Jer*_* S. 18 null hibernate hibernate-mapping hibernate-annotations

在保存hibernate对象时,hibernate中是否有设置忽略属性的空值

注意
在我的情况下,我通过Jackson将JSON反序列化为Hibernate Pojo.

JSON只包含Pojo的一些字段.如果我保存Pojo,那么不在JSON中的字段在Pojo中为空,而hibernate则更新它们.

我来到了这个环境updateable=false,但这不是100%的解决方案. http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-mapping-property

也许有人有另一个想法......

笔记2:

根据Hibernate Docs,dynamicUpdate 注释正是如此

dynamicInsert/dynamicUpdate(默认为false):
指定应在运行时生成INSERT/UPDATE SQL,并且仅包含值不为null的列.

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#mapping-declaration-class

有趣的是,如果您通过dynamic-update文档在XML中定义它,请不要提及NULL值的hanlding.

dynamic-update(可选 - 默认为false):
指定应在运行时生成UPDATE SQL,并且只能包含值已更改的列.

由于我同时使用注释 xml配置,hibernate似乎忽略了我的dynamicUpdate=true注释.

gka*_*mal 12

您应首先使用DB中的主键加载对象,然后在其上复制或反序列化JSON.

hibernate无法确定具有值null的属性是否已显式设置为该值,或者是否已将其排除.

如果是插入,则dynamic-insert = true应该有效.