(Hibernate) Использование OneToMay, как сохранить список / загрузить Set - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть объект с двумя списками:

@Entity
@Table(name = "example")
public class Example {

    @OneToMany(mappedBy = "example", cascade = CascadeType.ALL)
    private Set<Item1> list1;

    @OneToMany(mappedBy = "example", cascade = CascadeType.ALL)
    private Set<Item2> list2;
}

Я использовал Set type, потому что с List hibernate создает дубликаты. Он отлично работает при загрузке, потому что сущность элемента сгенерировала идентификатор, и этот идентификатор участвует в методе equals. Но когда я добавляю новые элементы в набор перед сохранением, у меня нет этого идентификатора (я устанавливаю его на ноль). Таким образом, мой элемент set можно заменить.

На самом деле я хочу использовать List для сохранения коллекции и Set, когда hibernate загружает сущность. Может быть, что-то вроде этого:

@OneToMany(mappedBy = "example", cascade = CascadeType.ALL)
@SomeHibernateAnnotationMaybe(useCollectionType = Set.class)
private Collection<Item1> list1 = new ArrayList();

Или, может быть, есть какое-то другое решение, я не знаю. Переопределить метод equals для возврата false, когда оба идентификатора для элементов равны NULL - для меня это не вариант (я использую Lombok, и он генерирует много кода, который я не хочу писать вручную)

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