Hibernate Self Двунаправленный каскад OneToMany удалить не работает
У меня есть проблема с двунаправленными отношениями, которые не работают каскадным удалением, у меня есть следующая сущность, которая в основном собирает семейное древо со многими уровнями, если я пытаюсь что-то вроде em.remove (family), оно не удаляется дети и поймать это исключение "нарушение целостности - дочерняя запись найдена"
public class Family{
@Id
public Long id;
public String name;
@ManyToOne
@JoinColumn(name = "id_father")
public Family father;
@OneToMany(cascade = CascadeType.REMOVE, orphanRemoval = true)
@JoinColumn(name = "id_father")
public List<Family> children;
//getters setters
//hashcode equals
}
Таблица
Я бы
название
id_father
1 ответ
Прежде всего, я не думаю, что эта сущность имеет большой смысл, она кажется мне довольно ущербной. У вас есть семья с именем, списком детей (также типа Семья) и одним отцом, у которого может быть много семей. Разве не было бы более полезно создать сущность Person, которая может иметь одного отца и список детей? Но это зависит от вас.
Я создал семью с 2 детьми и смог запустить ваш код, он удалял семью с каждым ребенком. Можете ли вы успешно удалить семью без детей? Возможно, в этом и заключается проблема.