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

SpringDataJPAがOneToOne関係を保存して子行を追加または更新できません:外部キー制約が失敗します

    問題はおそらくID生成戦略です(連絡先を適切に初期化した場合)。IDを設定するにはユーザーオブジェクトをDBに挿入する必要がありますが、同時に連絡先はこのIDが有効なオブジェクトである必要があります。同じトランザクションで発生します。

    (perstitance.xmlで)JPAのログレベルをfineに切り替えると、ユーザーと連絡先を挿入するシーケンスが表示される可能性が高くなりますが、連絡先のuser_idは0になります。

    したがって、a)連絡先に明示的にユーザーを設定するようにしてください(関係は連絡先によって管理されると述べたように。b)ユーザーに連絡先を設定します。 c)永続化(1つのトランザクションで)JPAの実装によっては、それでも機能しない場合があります(発行されたクエリを確認してください。連絡時に挿入されてから更新される可能性があります)。生成戦略をTABLEに変更します。TABLEJPAは次の空きIDを取得し、それをオブジェクトに割り当てて挿入を実行し、挿入前に「既知」になるようにします。




    1. ヒストグラムの粗い配置を使用したSQLServerの結合推定

    2. MariaDB LOCALTIME()の説明

    3. mysql、列名を繰り返し処理します

    4. SQL Server(T-SQL)で月の名前を月の番号に変換する