这里有一些 关于JPA实体的讨论,以及哪些hashCode()/ equals()实现应该用于JPA实体类.大多数(如果不是全部)它们依赖于Hibernate,但我想讨论它们JPA实现中性(顺便说一下,我使用的是EclipseLink).
所有可能的实现都有各自的优点和缺点:
hashCode()/equals()合同一致性(不变性)为List/ Set操作据我所知,有三种选择:
Object.equals()和Object.hashCode()
hashCode()/ equals()工作hashCode()/ equals()坏了hashCode()/ equals()坏了我的问题是:
更新1:
通过" hashCode()/ equals()被破坏",我的意思是连续hashCode()调用可能会返回不同的值,也就是(当正确实施)不在的感觉打破ObjectAPI文档,但是当试图从检索改变实体引起的问题Map, Set或其他基于哈希的Collection.因此,在某些情况下,JPA实现(至少EclipseLink)将无法正常工作. …