什么问题/陷阱,必须重写时,必须考虑equals
和hashCode
?
这里有一些 关于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()
调用可能会返回不同的值,也就是(当正确实施)不在的感觉打破Object
API文档,但是当试图从检索改变实体引起的问题Map
, Set
或其他基于哈希的Collection
.因此,在某些情况下,JPA实现(至少EclipseLink)将无法正常工作. …