Независимо от того, проверяете ли вы равноправие всех членов-членов, речь идет о вашем определении равенства. Обратите внимание, что вы не можете правильно переопределить equals()
вообще, не переопределяя hashCode()
, а также чтобы равные объекты имели одинаковые хэш-коды.
С учетом сказанного мнения могут отличаться от того, стоит ли вообще переопределять эти методы для классов сущности JPA. Если вы переопределите их, то равенство должно, вероятно, основываться только на «бизнес-идентификаторе» - свойстве или свойствах объекта, которые определяют его личность для деловых целей, в отличие от его автогенерируемой ПК. Это делает равенство ответом на вопрос: «Делают объекты E1 и E2 представляют один и тот же постоянный объект» таким образом, который работает, если PKs объектов объекта были прочитаны/назначены или нет. Следуя этому принципу, вы должны указать, что вы не включают в себя элементы связанных коллекций в вашем определении.
Если у вас есть другое представление о равенстве, которое вы хотите оценить, тогда подумайте о предоставлении другого метода для его оценки или даже другого класса, ответственного за выполнение таких сравнений. Возможно, для этой цели может быть присвоен класс вашей организации Comparable
.
Класс A, вероятно, имеет уникальный идентификатор, не достаточно ли проверить этот идентификатор в методе equals? Кроме того, ALWAYS переопределяет hashcode при переопределении равных. – kevcodez