解决org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade

今天学hibernate多对一双向关联要删除多的一方时,我在两个持久类中都设了cascade=CascadeType.ALL,由于只想要删除一条记录,而与之相关联的其他记录不想被删除,所以我用了以下方法(多个Person对应一个Address):

Person p1 = (Person)session.get(Person.class, 3);
p1.setAddress(null);
session.delete(p1);

        但是会给我提示错误
org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations)

经过几次修改实验解决了:

Person p1 = (Person)session.get(Person.class, 4);
p1.getAddress().getPersons().remove(p1);
p1.setAddress(null);
session.delete(p1);


参考链接:

https://stackoverflow.com/questions/18358407/org-hibernate-objectdeletedexception-deleted-object-would-be-re-saved-by-cascad

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值