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

JPA OneToMany / ManyToOneの関係が機能しない-何が欠けていますか?

    注意したい主なことは、所有側を定義することです。 関係の正しく。私が覚えている限り、(理解するのが難しい場合もある)公式ドキュメントからの私の持ち帰りは、所有側がデフォルトでカスケードと透過的な削除をトリガーする側であるということでした。

    たとえば、上記では、所有側をProjectEntityとして定義しました。 したがって、カスケード永続化が機能するための最も重要な手順は、プロジェクトをPersonEntity.projectsに追加することです。 。

    次に、persistを呼び出します。 関係の所有側、つまり

    em.persist(projectTest);
    

    これで問題が解決しない場合は、JPAプロバイダーでSQLロギングを有効にして、実行しようとしているステートメント、特にこれらのエンティティがinsertされている順序を確認することをお勧めします。 ed。

    また、既存のコメントに従って、最初に人を永続化するようにしてください。これを行う場合、正しい方法は永続化を追加することだと思います 関係のエンティティ、つまり:

    PersonEntity persistedPerson = em.persist(personTest);
    projectTest.setPersonId(persistedPerson);
    em.persist(projectTest);
    


    1. 列名または指定された値の数がテーブル定義と一致しません

    2. 列データを行に分割するSQLクエリ

    3. 同じクエリを使用する複数のPHPWHILEループ

    4. MySQLを保護する方法:パート1