注意したい主なことは、所有側を定義することです。 関係の正しく。私が覚えている限り、(理解するのが難しい場合もある)公式ドキュメントからの私の持ち帰りは、所有側がデフォルトでカスケードと透過的な削除をトリガーする側であるということでした。
たとえば、上記では、所有側をProjectEntity
として定義しました。 したがって、カスケード永続化が機能するための最も重要な手順は、プロジェクトをPersonEntity.projects
に追加することです。 。
次に、persist
を呼び出します。 関係の所有側、つまり
em.persist(projectTest);
これで問題が解決しない場合は、JPAプロバイダーでSQLロギングを有効にして、実行しようとしているステートメント、特にこれらのエンティティがinsert
されている順序を確認することをお勧めします。 ed。
また、既存のコメントに従って、最初に人を永続化するようにしてください。これを行う場合、正しい方法は永続化を追加することだと思います 関係のエンティティ、つまり:
PersonEntity persistedPerson = em.persist(personTest);
projectTest.setPersonId(persistedPerson);
em.persist(projectTest);