cascade的delete-orphan配置

本文详细介绍了如何在一对多的关系中使用many-to-one映射,并设置cascade='delete-orphan'来实现当父对象的many-to-one属性被设置为null时,直接删除关联的子对象。通过示例代码展示了具体实现过程。

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

在一对多的设置上delete-orphan多见,但在many-to-one上,其依然好用。例如我们常用many-to-one来代替one-to-one,这样有时就要求根据把父对象的(many-to-one)属性设置为null是,直接把其属性对应的表子记录也要删除。

例如:用户信息对象、用户附属信息对象。两个对象是一对一的(附属对象上用户对象上的一个属性),在hibernate配置上用many-to-one来代替,这样如果设置“附属信息”属性的cascade='delete-orphan'。
java代码:
this.用户信息dao.lock(用户信息对象).
用户信息对象.set附属信息(null);

则会生成两个sql.

1.update 用户信息对象 set 附属信息=null where id=用户信息id.
2.delete from 附属信息 where 附属信息.id=原关联在用户信息对象的附属信息id.


一对多配置,但执行删除的时候,还是一条一条删。


jczjyyhxx.getJcsbs().clear();
for (Jcsb jcsb : jczjyxxForm.getJcsbs()) {
jcsb.setJcsbxh(null);// 注意hashcode
jczjyyhxx.addJcsb(jcsb);
}


<set name="jcsbs" inverse="true" cascade="all-delete-orphan">
<key column="fk_jczjyxxxh" />
<one-to-many class="Jcsb" />
</set>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值