Hibernate---inverse,cascade(2)

本文通过实例演示了在Hibernate中如何使用inverse与cascade属性来控制实体间的级联操作。包括不同配置下插入与更新操作的影响及产生的SQL语句。

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

接上:

2、将inverse设置为false;将casecade设置为none,保持测试代码不变。

发出如下sql语句:

Hibernate: insert into tbranchinfo (address, depname, id) values (?, ?, ?)插入分支机构信息
Hibernate: update tseal set branchInfoId=? where id=?更新关联关系,但是并没有插入seal,原因在于cascade=none
于是会报异常如下
org.hibernate.TransientObjectException: object references an unsaved transient instance - save
the transient instance before flushing: com.indigopacific.iessportal.persistent.Seal
没有保存一个瞬时的seal对象

3、将inverse设置为true,将casecade设置为save-update,保存测试代码不变。

发出如下sql语句:

Hibernate: insert into tbranchinfo (address, depname, id) values (?, ?, ?)
Hibernate: insert into tseal (sealName, id) values (?, ?)

说明:

由于inverse=true将维护级联关系的任务交给了seal,因此当保存branchinfo时不会考虑级联关系。

只发出插入tseal的语句,不会更新级联关系。

4、将inverse设置为true,将casecade设置为none,保持测试带不变

发出如下sql语句:

Hibernate: insert into tbranchinfo (address, depname, id) values (?, ?, ?)

说明:
只会插入branchinfo信息,不会级联保存seal,不会更新关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值