Удаление сирот JPA, как «принять» дочерний объект?
У меня есть модель «Форма» со списком дочерних элементов «Группа», в которой есть список дочерних элементов «Элемент», в форме он отображается как:
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "form", orphanRemoval = true)
private Set<GroupingModel> grouping;
в дочерней группе у меня есть это:
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.REFRESH)
@JoinColumn(name = "NR_SEQU_FORL")
private FormModel form;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "NR_SEQU_AGRU")
private Set<FormElementModel> customElements;
и в дочернем элементе у меня есть это:
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.REFRESH)
@JoinColumn(name = "NR_SEQU_AGRU")
private GroupingModel group;
Мне нужна опция удаления потерянных элементов, поскольку у меня не будет возможности узнать, какие дочерние элементы удаляются из группы, но мне также нужно разрешить «принятие» дочерних элементов, то есть мне нужно иметь возможность вызывать formRepository.save с новой формой, перемещая элементы из группы A в группу B.
Сейчас происходит то, что JPA пытается удалить элемент из группы A вместо обновления его до группы B, вызывая удаление потерянных файлов и вызывая исключение SQL («ОШИБКА: обновление или удаление в таблице «tb_element» нарушает ограничение внешнего ключа «fk_elem_04» " в таблице "tb_element" Подробности: на ключ (id_elem)=(1) все еще ссылаются из таблицы "tb_element".")
Я видел, как несколько человек говорили об этой ошибке JPA, в основном о том, что она происходит со ссылкой на спящий режим или затмение, но я до сих пор не нашел способа исправить ее, не внося огромных изменений в код, который у меня есть прямо сейчас.
Так вот в чем дело: как я могу отключить удаление сироты, когда указанный сирота усыновлен?