結合テーブルの行をHibernateに強制的に削除させることができないため、少し混乱しています。おそらく私は何かを別の方法で構成する必要があります。
ComponentとTaskのテーブルと、それらをComponent_Tasksに接続するテーブルがあります。私のクラスのコンポーネントには、次のものがあります。
@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name = "Component_Tasks",
joinColumns = @JoinColumn(name = "ComponentID"), inverseJoinColumns = @JoinColumn(name = "TaskID"))
public List<Task> getTasks() {
return tasks;
}
そして私のクラスのタスクで私は持っています
@ManyToOne
@JoinColumn(name = "ComponentID")
public Component getComponent() {
return component;
}
私が欲しいのは、タスクを削除するときに、デフォルトでComponent_Tasksテーブルの下線付きの行を削除することです。基本的に、外部キーの関係が原因で削除が失敗します
ALTER TABLE Component_Tasks ADD FOREIGN KEY (TASKID) REFERENCES Tasks (ID);
タスクのコンポーネントをnullに設定し、オブジェクトを保存してから削除しようとすると、同じ動作を実現できると思います。しかし、私はHibernateにデフォルトでこれを実行させたいと思っています。
助言がありますか?