zoukankan      html  css  js  c++  java
  • 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);

     

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

     

     

  • 相关阅读:
    Java框架介绍-13个不容错过的框架项目
    微信公众号 模板消息开发
    微信授权-授权方式、公众号是否关注
    Java Spring-Spring与Quartz整合
    Java框架搭建-Maven、Mybatis、Spring MVC整合搭建
    IOS UIView 04- 自定义控件
    IOS UIView 03- 自定义 Collection View 布局
    IOS UIView 02- 深入理解 Scroll Views
    MVC架构中的Repository模式 个人理解
    零开始的领域驱动设计
  • 原文地址:https://www.cnblogs.com/lhp2012/p/2311061.html
Copyright © 2011-2022 走看看