Я пытаюсь создать таблицу, которая фиксирует родительские и дочерние отношения, например дерево. Я хотел бы сохранить только два столбца, чтобы захватить эту структуру "id" и "parent". Я хочу, чтобы база данных имела возможность каскадного удаления всех дочерних элементов при удалении строки. Ниже приведена созданная мной сущность Hibernate. Я добавил аннотацию @OnDelete(action = OnDeleteAction.CASCADE)
, однако ON DELETE CASCADE
не добавляется в таблицу при ее создании с помощью Hibernate.
Это ошибка? Или я что-то упускаю или не понимаю?
@Entity
public class Tree {
@Id
@Column(name = "id", nullable = false)
private Long id;
@OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name = "parent", nullable = true)
private List<Tree> children;
@ManyToOne
@OnDelete(action = OnDeleteAction.CASCADE)
@JoinColumn(name = "parent", nullable = false)
private Tree parent;
public Tree(Long id) {
this.id = id;
}
public Tree() {
}
public Long getId() {
return id;
}
protected void setId(Long id) {
this.id = id;
}
public List<Tree> getChildren() {
return children;
}
public void setChildren(List<Tree> children) {
this.children = children;
}
public Tree getParent() {
return parent;
}
public void setParent(Tree parent) {
this.parent = parent;
}
}