Illegal attempt to associate a collection with two open sessions

错误信息:

org.springframework.orm.hibernate3.HibernateSystemException: Illegal attempt to associate a collection with two open sessions;

网上 说 两个不同的hibernate session都同时引用了同一个collection对象,merge应该根据ID先从数据库里面查询 这条数据 然后更新相应字段,如果是saveOrupdate 直接就保存或者更新了 。

假设有对象person其属性如下:
person(1, "zhangsan", "123");

merge(person);
时,表示它会先从数据库中查询出id和person id值一致的持久化对象
select ... where id = 1
如得到的对象为person2且其属性如下:
person2(1, "lisi", "567");
那么如果它们属性不一样,将person的属性赋给person2
person2(1, "zhangsan","123")

return person2

将原来的代码:
saveOrUpdate(person);
改为
merge(person);

qrcode_for_gh_bf7a27ade681_258.jpg

作者: 小柒

出处: https://blog.52itstyle.com

分享是快乐的,也见证了个人成长历程,文章大多都是工作经验总结以及平时学习积累,基于自身认知不足之处在所难免,也请大家指正,共同进步。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 如有问题, 可邮件(345849402@qq.com)咨询。