如何防止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

回到顶部