У меня довольно стандартное отображение @OneToMany в JPA без каскадов (настройка по умолчанию), например:
@JoinColumn(name = "PARENT_ID")
@OneToMany(fetch = FetchType.LAZY)
@OrderBy("date")
private List<ItemRow> items;
Моя проблема в том, что когда я пытаюсь em.merge () этой сущности,Hibernate считает, что если элемент отсутствует в коллекции, он должен быть удален из базы данных.Учитывая, что я не вызываю em.remove () явно, результирующий SQL действительно не пытается удалить элементы, Hibernate просто пытается выполнить SET PARENT_ID = NULL
, что, к счастью, не удается из-за ограничений базы данных.
Я не хочу загружать все элементы, просто чтобы сохранить их родителей в базе данных.Это было бы глупо.Мой пользовательский интерфейс разбит на страницы, и когда клиент отправляет частичную коллекцию, это не означает, что другие элементы должны быть удалены, я просто хочу вставить и обновить строки, которые видит пользователь, и оставить не включенные в список.
Что мне делать?Должен ли я удалить отображение коллекции из родительского объекта? Есть ли настройка для «без каскадирования, действительно, используйте это только для загрузки»?
Я использую JBoss EAP 6.4, который содержит Hibernate 4.2.18.