У меня есть объект с двумя списками:
@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, и он генерирует много кода, который я не хочу писать вручную)