如何防止Hibernate更新NULL值
保存hibernate对象时,hibernate中是否有设置可以 属性的 ?
在我的情况下,我正在通过杰克逊将JSON反序列化为Hibernate Pojo。
JSON仅包含Pojo的某些字段。如果保存Pojo,则不在JSON中的字段在Pojo中为null,然后hibernate更新它们。
我遇到了updateable=false
这个问题,但这不是100%的解决方案。
http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-
mapping-
property
也许有人有另一个主意…
根据Hibernate Docs的dynamicUpdate
,
dynamicInsert / dynamicUpdate(默认为false):
指定INSERT / UPDATE SQL应该在运行时生成,并且仅包含 的列。
http://docs.jboss.org/hibernate/core/3.6/reference/zh-
CN/html_single/#mapping-declaration-
class
如果您通过dynamic-update
文档在XML中定义它,就不用说空值的处理了。
动态更新(可选-默认为false):
指定应在运行时生成UPDATE SQL,并且只能包含其值已更改的列。
由于我同时使用了注释 xml配置,因此hibernate状态似乎忽略了我的dynamicUpdate=true
注释。
回答:
您应该首先使用数据库中的主键加载对象,然后在其顶部复制或反序列化JSON。
hibernate方式无法确定值null的属性是否已显式设置为该值或已排除。
如果它是一个插入,则dynamic-insert = true应该起作用。
以上是 如何防止Hibernate更新NULL值 的全部内容, 来源链接: utcz.com/qa/432514.html