hibernate级联更新出现a different object with the same identifier value was already associated

此为个人遇到此问题解决的办法,大佬们如果有更好的解决办法,欢迎留言

a different object with the same identifier value was already associated with the session。

错误原因:在hibernate中同一个session里面有了两个相同标识但是是不同实体

网上很多帖子的解决方案为 使用Hibernate里面自带的merge()

或者使用session.clear() session.flush()去解决

我在使用时发现这种方法并未生效依旧还是出现相同的问题。

---------------------------------------------------------------------------------------------------------------------------------

解决办法:

这是我对级联的配置:

班级的实体类中我配置了 一对多 关系

---------------------------------------------------------------------------------------------------------------------------------

学生实体类中我配置了 多对一 关系

---------------------------------------------------------------------------------------------------------------------------------

在执行更新方法时前端传入的班级对象,通常认为前端需要传一个班级的id进行关联这样会导致

执行更新操作时会出现a different object with the same identifier value was already associated with the session错误。

解决办法:必须确保传入学生实体类中的班级类不能有id或者干脆不传(个人建议不传) 如下图

 

注:使用注解配置映射关系时从数据库中查询出来再更新也有这个问题,需要在一方中将多方实体中的一方对象清空再执行更新否则也会报a different object with the same identifier value was already associated with the session错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值