此为个人遇到此问题解决的办法,大佬们如果有更好的解决办法,欢迎留言
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错误