2017-08-17 64 views
0

@OneToMany(mappedBy="columnOne", orphanRemoval=true, cascade=CascadeType.ALL) @LazyCollection(LazyCollectionOption.FALSE) private List<Constraint> constraints = new ArrayList<Constraint>();休眠:更新空的子表

每當父子記錄更新時,子表記錄也應該更新。

當我厭倦了session.SaveOrUpdate(),父表的記錄得到了更新,但子表每次新記錄插入和更新不會導致重複數據

當厭倦了Session.merge()的,出現錯誤A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: com作爲約束可能爲空,因爲並不總是子表具有數據

要解決此問題,請嘗試設置空集合,但這會導致數據庫中的行數很大,且爲空值。

有什麼辦法來更新Parent和Child即使每當家長子記錄被更新子表記錄 應該也會更新子表中的數據可能爲空

回答

0

休眠髒檢查將做到這一點對你來說,你需要把所有的實體管理,在默認情況下管理實體中的任何改變hibernate會檢查所有的管理實體及其屬性,檢查此link進一步信息

當我厭倦了session.SaveOrUpdate(),父表記錄了 更新,但子表一個每次插入新記錄,而不是 更新,從而導致重複數據

我猜你的孩子實體沒有管理,沒有值id集,所以是你的孩子會被級聯(因爲這是你想要的設置CascadeType的),將持續爲你的數據庫的新記錄。