Hibernate PersistenceSet и Lombok EqualsAndHashCode проблема - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть сущность, скажем, элемент, который использует аннотацию Lombok @EqualsAndHashCode(callSuper = true), которая автоматически генерирует equals() и hashCode() методы. Объекты помещаются в коллекцию HashSet.

Проблема в том, что когда я получаю коллекцию из БД (Spring JPARepository с Hibernate) PersistentSet прокси с моими элементами в HashSet и когда я использую Lombok @EqualsAndHashCode метод persistentSet.contains(object) возвращает false. Когда мой hashCode() возвращает 1 или другое значение, но без автоматически сгенерированных методов Lombok , он работает нормально -> persistentSet.contains(object) возвращает true. То, что еще автоматически генерируется Lombok hashCode(), также кажется хорошим, потому что оно возвращает постоянное значение для данного объекта в течение сеанса. Так что я заблудился.

Может быть, у кого-то есть идея, в чем здесь мы можем ошибаться!?

Версии:
Спящий режим: 5.3.9. Окончательный вариант
Lombok: 1.18.10
база данных: MySQL
Spring: 5.1.9.RELEASE

1 Ответ

0 голосов
/ 05 ноября 2019

Я нашел причину. Одно из свойств объекта имело аннотацию @PostLoad. При вызове «persistentSet» .contains (object) должен быть рассчитан hascode перед инициализацией аннотированных свойств @PostLoad.

...