【自己項目遇到的問題】:
新增 刪除都可以實現 ,就是修改的時候無法同步更新設計三個類: 問題類scask 正文內容類text類 查看數+回復數+討論數的runinfo類
【正文類和查看數+回復數+討論數的 類無法修改更新】
后台更改了注解 成功
【參考博客:http://blog.sina.com.cn/s/blog_9b81777f0101gn3f.html】
cascade表示級聯操作
CascadeType.MERGE級聯更新:若items屬性修改了那么order對象保存時同時修改items里的對象。對應EntityManager的merge方法
CascadeType.PERSIST級聯刷新:獲取order對象里也同時也重新獲取最新的items時的對象。對應EntityManager的refresh(object)方法有效。即會重新查詢數據庫里的最新數據
CascadeType.REFRESH級聯保存:對order對象保存時也對items里的對象也會保存。對應EntityManager的presist方法
CascadeType.REMOVE級聯刪除:對order對象刪除也對items里的對象也會刪除。對應EntityManager的remove方法
CascadeType.PERSIST只有A類新增時,會級聯B對象新增。若B對象在數據庫存(跟新)在則拋異常(讓B變為持久態)
CascadeType.MERGE指A類新增或者變化,會級聯B對象(新增或者變化)
CascadeType.REMOVE只有A類刪除時,會級聯刪除B類;
CascadeType.ALL包含所有;
CascadeType.REFRESH沒用過。
綜上:大多數情況用CascadeType.MERGE就能達到級聯跟新又不報錯,用CascadeType.ALL時要斟酌下CascadeType.REMOVE
@Fetch:
定義了加載關聯關系的獲取策略. FetchMode 可以是
SELECT (在需要加載關聯的時候觸發select操作), SUBSELECT(只對集合有效,使用了子查詢策略,詳情參考Hibernate參考文檔)
JOIN (在加載主實體(owner entity)的時候使用SQL JOIN來加載關聯關系).
JOIN 將覆寫任何延遲屬性 (通過 JOIN策略加載的關聯將不再具有延遲性).