Hibernate 一對多級聯刪除


大背景:Struts2SpringHibernateMyEclipse

Hibernate 一對多級聯刪除

實例一

背景:

系統中有post表和replay表。分表表示帖子和帖子回復的表。一篇帖子可以有多個回復。

 

要求:

    現在要求刪除一篇帖子的同時刪除對應的replay表中該帖子的所有回復。

實現:

     在post.hbm.xml中這樣配置 (即在“一方”的hbm.xml文件中)

 

 <set name="replaies" inverse="true" cascade="all" > 或者:cascade="delete"


      操作刪除的代碼

Post post=postDAO.findById(postId);
postDAO.delete(post);

 

      這樣就會將某篇帖子及其回復全部刪除了。

 

實例二

背景:

系統中有post表和replay表。分表表示帖子和帖子回復的表。一篇帖子可以有多個回復。

要求:

打開某篇帖子,刪除了其中的某一條“回復”。這時候要同時刪除該主題貼以及所有回復。(不太符合常理)。

實現:

  

 在post.hbm.xml中這樣配置 

<set name="replaies" inverse="true" cascade="all" >

或者:cascade="delete"

在replay.hbm.xml中這樣配置

<many-to-one name="post"

class
="com.lhp.hibernate.beans.Post"

fetch
="select"

lazy
="false"

cascade
="delete" >

<column name="postId" not-null="true" />

</many-to-one>


 

操作刪除的代碼

  Replay replay=replayDAO.findById(replayId);

replayDAO.delete(replay);

 

            解讀:在這個“一對多”關系中,“一方”和“多方”都設置了級聯刪除。那么刪除了“多方”中的一條記錄,就會級聯刪除“一方”中的記錄,然后“一方”又會級聯刪除“多方”的所有記錄。

 

 


免責聲明!

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



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