Hibernate配置多对多级联删除

本文介绍Hibernate中实现多对多关系映射的两种方法:通过配置两个一对多及通过配置<set>模块。重点讲解如何设置inverse属性以区分主控方和被控方,并说明了如何在数据库中设置外键中间表的关联关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值