sql >> データベース >  >> RDS >> Mysql

MySQLの@OneToManyエラー:親行を削除または更新できません:外部キー制約が失敗します

    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()を使用して削除する必要があります。 。




    1. MariaDB JSON_ARRAYAGG()の説明

    2. 複合インデックスはMySQLに方向性がありますか?

    3. count(*)とnum_rowsの使用

    4. exec結果をSQL変数に割り当てる方法は?