`
eason_chen
  • 浏览: 15553 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Hibernate配置多对多级联删除

    博客分类:
  • Java
阅读更多
Hibernate实现多对多关系映射有两种方法:
1.通过配置两个一对多来实现多对多,既三张数据表,三个实体,同时配置<component>组件模块,唯一缺点是要同时实现这个外键中间表的增删查改功能.
2.通过配置双方的<set>模块来实现,同时两个实体的bo对象都有对方的Set集合,而inverse必须设置主控方为false,被控方为inverse=true,如果双方都为true(即都为被控方)那就没人来维护关系,那么更新/删除数据时无论哪一方都不会去更新/删除中间表的数据...通过Hibernate配置后已经可以实现主控方删除时能删除本身数据和中间表数据,而被控方只能删除本身表的数据,中间表的数据仍然存在....要想实现被控方删除时同时删除中间表数据,需要去数据库中设置外键中间表的关联关系为delete cascade就可以了..

以下为hibernate配置:
User:
<set name="roles" table="userrole" inverse="false">     
      <key column="username"/>    
      <many-to-many class="com.incesoft.ui.bo.Role" column="id" />  
</set>

Role:
<set name="users" table="userrole" inverse="true">     
      <key column="id"/>    
      <many-to-many class="com.incesoft.ui.bo.User" column="username" />  
</set>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics