To equals and hashcode or not on entity classes, that is the question

谁说我不能喝 提交于 2019-12-01 17:32:46

There are times when you want Equals to compare all properties and times when you want Equals to be just the key. We've had a lot more success using helper classes that are explicit so there isn't ambiguity as to what's being compared.

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

or

Entity1.EqualsByKey...
Entity1.EqualsByProperties...

I've tried this before on a large scale (or at least in an application that heavily uses hibernate). It's a good idea.

It makes sense to have .equals and .hashcode include only these natural keys but what if you have more than one instance of the same entity (same natural id thus same hashcode)? It seems like this practice could have subtle implications elsewhere in your application.

This is what it's meant for. You typically want multiple instances of the same entity to succeed when comparing .equals, and yes, it has implications elsewhere. IMO those implications are that things would work as expected.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!