Mysql
 sql >> Datenbank >  >> RDS >> Mysql

JPA OneToMany/ManyToOne-Beziehung funktioniert nicht - Was übersehe ich?

Die Hauptsache, auf die Sie achten sollten, ist die Definition der Eigentümerseite der Beziehung richtig. Soweit ich mich erinnere, war meine Erkenntnis aus der (manchmal schwer verständlichen) offiziellen Dokumentation, dass die Eigentümerseite so ziemlich diejenige ist, die standardmäßig Kaskaden und transparente Löschungen auslöst.

Beispielsweise haben Sie oben die Eigentümerseite als ProjectEntity definiert , daher ist der wichtigste Schritt, damit die kaskadierte Persistenz funktioniert, das Projekt zu PersonEntity.projects hinzuzufügen .

Sie werden dann persist aufrufen wollen auf der Eigentümerseite der Relation, also

em.persist(projectTest);

Wenn dies nicht hilft, würde ich vorschlagen, dass Sie die SQL-Protokollierung in Ihrem JPA-Anbieter aktivieren, um herauszufinden, welche Anweisungen er auszuführen versucht, und insbesondere in welcher Reihenfolge diese Entitäten insert werden Aufl.

Versuchen Sie auch, gemäß den vorhandenen Kommentaren, zuerst die Person zu beharren. Wenn Sie dies tun, glaube ich, dass der richtige Weg darin besteht, das beharrt hinzuzufügen Entität zur Beziehung, d. h.:

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