Hibernate: Должен ли я включить поле 'version' в методы hashcode () и equals () - PullRequest
5 голосов
/ 10 сентября 2011

Я знаю, что при переопределении hashcode() и equals() моих постоянных сущностей, я не должен включать ID и включать только значимые свойства, которые однозначно идентифицируют объект.Но как насчет поля version, которое используется для оптимистического управления параллелизмом в Hibernate?Должен ли я пропустить это, как ID?Что если, скажем, new User(name='John', version=1).equals(new User(name='John',version=2)), разве это не смущает Hibernate OCC?

1 Ответ

3 голосов
/ 12 сентября 2011

Рекомендуется реализовать equals () и hashCode (), используя равенство бизнес-ключей.Равенство бизнес-ключей означает, что метод equals () сравнивает только те свойства, которые образуют бизнес-ключ.Это ключ, который идентифицирует наш экземпляр в реальном мире (естественный ключ-кандидат)

Поэтому вы должны , а не включить свойство версии в equals() hashcode()

См .: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/persistent-classes.html#persistent-classes-equalshashcode

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...