Mysql
 sql >> Base de données >  >> RDS >> Mysql

La relation JPA OneToMany/ManyToOne ne fonctionne pas - Qu'est-ce qui me manque ?

La principale chose à laquelle vous voudrez faire attention est de définir le côté propriétaire de la relation correctement. Autant que je m'en souvienne, ce que j'ai retenu de la documentation officielle (parfois difficile à comprendre) était que le côté propriétaire est à peu près celui qui déclenchera par défaut des cascades et des suppressions transparentes.

Par exemple, dans ce qui précède, vous avez défini le côté propriétaire comme ProjectEntity , donc l'étape la plus importante pour que la persistance en cascade fonctionne est d'ajouter le projet à PersonEntity.projects .

Vous voudrez alors appeler persist du côté propriétaire de la relation, c'est-à-dire

em.persist(projectTest);

Si cela ne vous aide pas, je vous suggère d'activer la journalisation SQL dans votre fournisseur JPA pour savoir quelles instructions il essaie d'exécuter, et surtout dans quel ordre ces entités sont insert éd.

Essayez également, selon les commentaires existants, de persister d'abord. Si vous faites cela, je pense que la bonne façon est d'ajouter le persistant entité à la relation, c'est-à-dire :

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