一尘不染

休眠对象相等性检查

hibernate

据我了解(如果我错了,请纠正我),Hibernate使用对象引用来检查对象的相等性。当Hibernate识别同一数据库记录中有多个对象附加时,它将引发以下异常。

"a different object with the same identifier value was already associated with the session"

我的问题是,Hibernate是否使用equal()方法检查对象是否相等(默认的equal方法使用对象引用)?如果为true,则重写的equal()方法会改变Hibernate的行为吗?

注意:我的问题不是关于Hibernate持久对象中的实现equal()hashCode()方法问题

谢谢。


阅读 144

收藏
2020-06-20

共1个答案

一尘不染

Hibernate使用实体(即类)和已配置的ID。过于简化,看起来像这样

o1.getClass().equals(o2.getClass()) && o1.getId().equals(o2.getId())
2020-06-20