#hibernate #hibernate-mapping
#hibernate #hibernate-сопоставление
Вопрос:
Я борюсь с проблемой, описанной здесь. У меня есть постоянный класс, который я хочу сделать безопасным для сбора данных, переопределив hashCode()
и equals()
. Поскольку у моей сущности нет хорошего естественного ключа, этим методам потребуется использовать @Id
поле, поэтому мне нужно назначить идентификатор во время создания объекта. Но теперь Hibernate понадобится другой способ определить, является ли экземпляр временным или постоянным, и логическое поле для этого использовать @Version
.
Я знаю, что мог бы сделать это в файле hbm с помощью <version unsaved-value="null">
. Но я использовал аннотации, которые не поддерживают unsaved-value
атрибут. Если я просто использую обычную @Version
аннотацию, будет ли Hibernate достаточно умен, чтобы использовать его для определения состояния сохраняемости? Я проверил документацию Hibernate, но она немного неоднозначна.
Кто-нибудь знает о решении, отличном от переноса сопоставления для всего класса в файл hbm?
Ответ №1:
Подумайте еще раз о своей модели сущности. Если вы не можете найти естественный ключ (даже составной), у вас может возникнуть проблема здесь.
Не вводите свой идентификатор в equals() / hashCode() и используйте аннотацию @Version только по назначению. Это усложнит вашу жизнь.