遇到报错 org.hibernate.ObjectDeletedException: deleted instance passed to merge: [xxx#<null>]

本文探讨了在使用Hibernate时遇到的ObjectDeletedException异常,特别是当对象被删除后再次尝试保存时出现的问题。此外,还详细分析了@ManyToOne注解中fetchType属性的影响,指出默认的EAGER加载可能导致未预期的数据操作。了解fetch属性的LAZY和EAGER策略对于优化JPA的性能至关重要,同时,文章也提到了JPA实体的生命周期管理,帮助开发者更好地理解和避免此类错误。

分享遇到报错 org.hibernate.ObjectDeletedException: deleted instance passed to merge: [xxx#]的情况

现象

1、百度后大多博客上都说是先删除一个对象,后面又保存了这个对象导致的,但是其实
如果一个对象删两次也会遇到这个问题
2、注解@manyToOne里面的fetchType默认是eager,在调用这个实体的时候,就会立即得到该实体对应表的数据引用,这个时候再对数据进行操作是不被允许的

扩展

1、fetch属性指定关联对象的加载策略或方式:
  LAZY懒加载,使用的时候加载
  EAGER立即加载

https://wenku.baidu.com/view/7dc0d17ebd64783e09122bbc.html
2、JPA生命周期
https://max.book118.com/html/2019/0311/7164041045002013.shtm
https://www.objectdb.com/java/jpa/persistence/managed

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值