您的位置:首页 > 其它

HIBERNATE两个相同的标识符挂不同对象的解决

2011-02-24 17:09 316 查看
HibernateSystemException: a different object with the same identifier value was already associated with the session.

这个错误是因为在hibernate的session一级缓存中存在一个被缓存的对象A,并且有另一个不在一级缓存中的对象B和A的标识符相同,但是它们不是同一个对象,即引用不相同,所以会抛出此异常。

以下代码也会抛出异常:

Image i = new Image();

i.setId(1);

Image j = session.load(Image.class,1);

session.delete(i);

因为i和j都是Image对象,并且有相同的标识符1,但是在session中的对象j和不在session中的对象i是两个对象,它们的引用不相同。因此会抛出异常!

解决办法:可以用session.clear()清一下session缓存,再进行hibernate session相关的操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐