为了等于和哈希码或不在实体类,这是问题
我一直试图推断最好的方式来处理在实体上实现散列码和等于(通常意义上的实体,但在大多数情况下,它将是JPA实体)通常是很好的做法。
在Hibernate手册的第24章中http://docs.jboss.org/hibernate/core/3.3/reference/en/html/best-practices.html它说这...
确定所有实体的自然键,并使用它们进行映射。 实现equals()和hashCode()来比较组成自然键的属性。
.equals和.hashcode只包含这些自然键是有意义的,但是如果你有多个同一实体的实例(相同的自然ID,因此相同的散列码)呢? 看起来这种做法可能会在你的应用程序的其他地方产生微妙的影响。 有人曾经大规模地尝试过这个吗?
有些时候你想要Equals比较所有属性和时间,当你想要Equals只是关键。 我们使用很明确的帮助程序类获得了更多的成功,所以对于比较什么是没有歧义的。
ByKeyComparer.Equals...
ByPropertiesComparer.Equals...
要么
Entity1.EqualsByKey...
Entity1.EqualsByProperties...
我已经在大规模(或至少在大量使用休眠的应用程序)之前尝试过这一点。 是个好主意。
.equals和.hashcode只包含这些自然键是有意义的,但是如果你有多个同一实体的实例(相同的自然ID,因此相同的散列码)呢? 看起来这种做法可能会在你的应用程序的其他地方产生微妙的影响。
这是它的意思。 在比较.equals时,您通常希望同一个实体的多个实例成功,并且是的,它在别处有影响。 海事组织的这些影响是,事情会按预期工作。
链接地址: http://www.djcxy.com/p/37003.html上一篇: To equals and hashcode or not on entity classes, that is the question