保存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
updateable=false
也许有人有另一个主意…
笔记2:
根据Hibernate Docs的dynamicUpdate 注释 ,
dynamicUpdate
dynamicInsert / dynamicUpdate(默认为false): 指定INSERT / UPDATE SQL应该在运行时生成,并且仅包含 其值不为null 的列。
http://docs.jboss.org/hibernate/core/3.6/reference/zh- CN/html_single/#mapping-declaration- class
如果您通过dynamic-update文档在XML中定义它,就不用说空值的处理了。
dynamic-update
动态更新(可选-默认为false): 指定应在运行时生成UPDATE SQL,并且只能包含其值已更改的列。
由于我同时使用了注释 和 xml配置,因此hibernate状态似乎忽略了我的dynamicUpdate=true注释。
dynamicUpdate=true
您应该首先使用数据库中的主键加载对象,然后在其顶部复制或反序列化JSON。
hibernate方式无法确定值null的属性是否已显式设置为该值或已排除。
如果它是一个插入,则dynamic-insert = true应该起作用。