可能重复:
Hibernate: different object with the same identifier value was already associated with the session
据我所知(如果我错了,请纠正我)Hibernate使用对象引用来检查对象是否相等。当Hibernate识别出有多个对象附加到同一个DB记录时,它会抛出异常。
"a different object with the same identifier value was already associated with the session"
我的问题是,Hibernate是否使用equal()
方法来检查对象的相等性(默认的equal方法使用对象引用)?如果是,那么覆盖equal()
方法会改变Hibernate行为吗?
注意:我的问题不是关于Hibernate持久化对象中的issues of implementing equal()
or hashCode()
方法。
谢谢。
答案 0 :(得分:1)
Hibernate使用实体(即类)和配置的id。过度简化,这看起来像这样
o1.getClass().equals(o2.getClass()) && o1.getId().equals(o2.getId())