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);

 

            解读:在这个“一对多”关系中,“一方”和“多方”都设置了级联删除。那么删除了“多方”中的一条记录,就会级联删除“一方”中的记录,然后“一方”又会级联删除“多方”的所有记录。

 

 

转载于:https://www.cnblogs.com/lhp2012/archive/2012/01/03/2311061.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值