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相关的操作。
这个错误是因为在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相关的操作。
相关文章推荐
- JAVA 两个对象不同为什么他们的hashcode有可能相同
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- -两个对象值相同(xequals(y) == true)但却可有不同的hash code这句话应该是对的吧
- Java比较两个对象是否相同并获得不同的字段
- 将具有关联关系的两个表通过hibernate从数据库中查出来后转成Json对象时报错解决
- 面试题:两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- 将具有关联关系的两个表通过hibernate从数据库中查出来后转成Json对象时报错解决:采用过滤器
- 【Java面试题】41 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- 将具有关联关系的两个表通过hibernate从数据库中查出来后转成Json对象时报错解决:采用过滤器
- 在Hibernate中“有相同ID的不同对象在session中被锁定”的情况处理。
- Java 查找两个有复杂对象的集合中的不同元素和相同的元素
- 找出list中的不同元素、删除两个list中相同的对象
- (面试题)两个对象值相同 (x.equals(y) == true) ,但却可有不同的 hash code ,这 句话对不对?
- Java - 两个对象值相同(x.equals(y) == true),但却可以有不同的hash code,这句话对不对?
- (面试题)两个对象值相同 (x.equals(y) == true) ,但却可有不同的 hash code ,这 句话对不对
- 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
- 两个对象值相同(x.equals(y) == true),但却可有不同的hashCode,这句话对不对?
- 找出list中的不同元素、删除两个list中相同的对象