2つのエラーがあります。
最初のエラー:ヘッダーと詳細の間の双方向の関連付けを2回マッピングしました。1回はヘッダーに、もう1回は詳細にマッピングしました。双方向の関連付けがある場合、mappedBy
を使用して、一方の側(この場合は一方のヘッダー側)をもう一方の側の逆として宣言する必要があります。 属性:
@OneToMany(fetch = FetchType.EAGER, orphanRemoval = true, mappedBy = "reminderHeader")
@Cascade(value = { CascadeType.SAVE_UPDATE, CascadeType.DELETE })
@Fetch(FetchMode.SELECT)
private Set<ReminderDetails> reminderDetailslist;
2番目のエラー:DELETEカスケードは、Session.delete()
を使用する場合にのみ適用されます エンティティを削除するメソッド。削除クエリはセッションを完全にバイパスします(つまり、クエリによって削除されたが以前に読み込まれたエンティティは、クエリが実行されていない場合と同じ状態でセッションに残ります)。
したがって、削除をカスケードするには、selectクエリを実行して、削除するすべてのヘッダーを見つけてから、これらのヘッダーをループして、session.delete()
を使用して削除する必要があります。 。