hibernate的級聯(hibernate注解的CascadeType屬性)


【自己項目遇到的問題】:

新增  刪除都可以實現 ,就是修改的時候無法同步更新設計三個類:  問題類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策略加載的關聯將不再具有延遲性).


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM