親が削除されたときに子レコードを削除しようとしています。親テーブルには、子を参照する列はありません。子は、1 対 1 の任意の関係で親を参照します。
親が削除されると、事実関係がまだ存在するため、制約がスローされます。設定関係を子側に追加しても、どうにもなりません。私が推測しているため、Hibernateは子レコードを削除しません。子レコードはフェッチされませんでした。
インターセプターで行う以外に、子レコードを削除する方法はありますか? ありがとう。
親が削除されたときに子レコードを削除しようとしています。親テーブルには、子を参照する列はありません。子は、1 対 1 の任意の関係で親を参照します。
親が削除されると、事実関係がまだ存在するため、制約がスローされます。設定関係を子側に追加しても、どうにもなりません。私が推測しているため、Hibernateは子レコードを削除しません。子レコードはフェッチされませんでした。
インターセプターで行う以外に、子レコードを削除する方法はありますか? ありがとう。
同様の状況に例を提供し、あなたの状況に適用して問題を解決します。
Employee のテーブルに Department_ID があり、Department には Employee_ID を参照する列がないと仮定します。
結合列を使用して従業員を部門に関連付けます。このようにして、一方向の関連付けが得られます。
public class Employee {
@OneToOne
@JoinColumn(name = "DEPARTMENT_ID")
private Department department;
}
次に、属性との関連付けをマークすることで、部署を従業員に関連付けmappedBy
ます。従業員側の関連付けの所有フィールドを参照します。このようにして、双方向の関連付けが得られます。
public class Department {
@OneToOne(mappedBy = "department", cascade = CascadeType.ALL)
private Employee employee;
}
CascadeType.ALL との関連付けをマークすると、CascadeType.REMOVE が含まれ、削除操作で Employee にカスケードされます。ここで、部門を削除すると、従業員も一緒に削除されます。