У меня есть проект весенней загрузки с JPA.Мне нужен Hibernate, чтобы удалить запись из базы данных, когда она удаляется из коллекции сущностей, а затем вызывается сохранение для этой сущности.Это возможно.Например,
@Entity
@Table(name="TABLEA")
public class Parent {
@Id
@Column(name = "TABLEA_ID")
private Integer id;
@OneToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL, orphanRemoval=true)
@JoinColumn(name="TABLEB_FK", referencedColumnName="TABLEA_ID")
private List<Child> children; // ??
}
@Entity
@Table(name="TABLEB")
public class Child {
@Id
@Column(name = "TABLEB_ID")
private Integer id;
@Column(name = "TABLEB_FK")
private Integer fkId;
}
В этом классе сущностей у меня есть метод, который сортирует, какие объекты в коллекции все еще существуют.В некоторых случаях конкретный дочерний объект удаляется из коллекции и вызывается сохранение для родительского объекта.К сожалению, я получаю ORA-01407: невозможно обновить ("TABLEB". "TABLEB_FK") до NULL.Похоже, что hibernate обновляет отношение до нуля, прежде чем удаляет сирот, и база данных имеет ограничение не равное нулю для этого столбца.У меня есть вся обработка для добавления / удаления объектов в классе сущности, поэтому я не могу явно вызвать delete для отдельного объекта и надеялся каскадно удалить это из родительского объекта, выполнив сохранение.Это может быть невозможно.Любая помощь приветствуется.Спасибо.