有沒有休眠設置到忽略空值保存hibernate對象時的屬性?如何防止Hibernate更新空值
注意
在我的情況下,我通過傑克遜反序列化JSON到一個Hibernate的POJO。
JSON只包含Pojo的一些字段。如果我保存了Pojo,那麼不在JSON中的字段在Pojo中是空的,並且休眠會更新它們。
我來到了設置updateable=false
,但這不是100%的解決方案。 http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-mapping-property
也許有人有另外的想法...
注2:
根據Hibernate的文檔的dynamicUpdate
註釋正是這麼做的
的dynamicInsert/dynamicUpdate(默認爲false):
指定INSERT/UPDAT E SQL應該在運行時生成 並且只包含其值不爲空的列。
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配置,休眠似乎忽略了我的dynamicUpdate=true
註解。
您可以使用動態更新,以避免尚未更新的屬性在SQL來,但它通常建議使用此設置實體有太多的屬性(列> 50)[參考之用時: Java持久性與Hibernate 2006版]。 @hvgotcodes正確地指出,如果永遠不會被持久化,你不必映射字段。 – frictionlesspulley