Проблема при удалении объекта parent-child в Hibernate «удаленный объект будет повторно сохранена каскадом»

Вопрос: У меня есть следующие два объекта: 1- сделка @OneToMany(cascade=CascadeType.ALL,mappedBy = "deal", fetch = FetchType.EAGER) @Fetch( FetchMode.SELECT) private List 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

Вопрос:

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

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 перед удалением сделки с помощью спящего режима.

Оцените статью
Добавить комментарий