Вопрос:
У меня есть следующие два объекта:
1- сделка
@OneToMany(cascade=CascadeType.ALL,mappedBy = «deal», fetch = FetchType.EAGER) @Fetch( FetchMode.SELECT) private List<DealCheckList> dealCheckList;
2- DealCheckList
@JoinColumn(name = «DEAL_ID», referencedColumnName = «DEAL_ID», insertable = false, updatable = false) @ManyToOne(fetch = FetchType.LAZY) private Deal deal;
Выполняя session.delete(deal) я получаю следующую ошибку
Caused by: org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations):
Пожалуйста помоги.
Ответ №1
Вероятно, это означает, что объект, который вы пытаетесь удалить, является дочерним элементом какой-либо другой коллекции. Настройка cascade = “all” для объекта означает, что его дети будут удалены/обновлены автоматически, если они не принадлежат к какому-либо другому родителю.
вам нужно удалить объект, который вы пытаетесь удалить, из его родительской коллекции.
Пример:
objectBeingDeleted.getParent().getChildren().remove(objectBeingDeleted);
и тогда вы можете сделать
session.delete(objectBeingDeleted);
Удачи
Ответ №2
У вас есть объект DealCheckList который все еще ссылается на эту сделку и должен удалить ее там на Java перед удалением сделки с помощью спящего режима.