我一直在尝试推理处理在实体上实现哈希码和 equals 是否通常是一种好的做法的最佳方法(我的意思是一般意义上的实体,但在大多数情况下它将是 JPA 实体)。
在 Hibernate 手册http://docs.jboss.org/hibernate/core/3.3/reference/en/html/best-practices.html的第 24 章中,它说...
识别所有实体的自然键,并使用 . 实现 equals() 和 hashCode() 来比较构成自然键的属性。
让 .equals 和 .hashcode 只包含这些自然键是有意义的,但是如果您有多个相同实体的实例(相同的自然 id 因此相同的哈希码)怎么办?似乎这种做法可能会对您的应用程序的其他地方产生微妙的影响。以前有人大规模尝试过吗?