hibernate – 对于实体​​类是否等于和哈希码,这就是问题所在

我一直试图推理最好的方法来处理实现哈希码和实体上的等号是否通常是好的做法(我的意思是一般意义上的实体,但在大多数情况下它将是一个JPA实体).

在Hibernate手册http://docs.jboss.org/hibernate/core/3.3/reference/en/html/best-practices.html的第24章中,它说…

Identify natural keys for all
entities, and map them using
. Implement equals() and
hashCode() to compare the properties
that make up the natural key.

让.equals和.hashcode只包含这些自然键是有意义的,但是如果你有多个同一个实体的实例(相同的自然id,那么相同的哈希码)呢?看起来这种做法可能会在您的应用程序的其他地方产生微妙的影响.有没有人在大规模之前尝试过这个?

有些时候,当您希望Equals只是键时,您希望Equals比较所有属性和时间.我们使用明确的辅助类已经取得了很大的成功,因此对于所比较的内容没有歧义.

ByKeyComparer.Equals...
ByPropertiesComparer.Equals...

要么

Entity1.EqualsByKey...
Entity1.EqualsByProperties...
本站公众号
   欢迎关注本站公众号,获取更多程序园信息
开发小院