【发布时间】:2014-01-03 14:05:05
【问题描述】:
有这样的问题。加载 2 个对象的集合(按主键,使用条件)。然后在循环中迭代它们。在处理第一个对象时,在离这个循环非常远的地方,通过与循环中的第二个对象相同的主键加载对象。在这里,我看到这两个对象的 System.identityHashCode() 是不同的。当处理循环中的第二个对象并尝试保存它时,我得到了异常:
org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session:
试图用简单的对象来模拟这个问题,加载,修改,再次通过 PK 加载,用不同的事务传播保存 - 我总是得到相同的对象实例...... 能否请您告知何时可以通过 PK 在同一会话加载中获取第二个对象实例?
【问题讨论】:
-
另外,请确保您在实体类中有重写方法
equals和hashCode。