Het belangrijkste waar u op wilt letten, is het definiëren van de bezittende kant van de relatie correct. Voor zover ik me herinner, was mijn conclusie van de (soms moeilijk te begrijpen) officiële documentatie dat de eigenaarskant vrijwel degene is die standaard cascades en transparante verwijderingen zal veroorzaken.
In het bovenstaande hebt u bijvoorbeeld de eigenaarszijde gedefinieerd als ProjectEntity
, dus de belangrijkste stap om trapsgewijze persistentie te laten werken, is om het project toe te voegen aan PersonEntity.projects
.
U wilt dan persist
. bellen aan de eigenaarskant van de relatie, d.w.z.
em.persist(projectTest);
Als dit niet helpt, raad ik u aan SQL-logboekregistratie in uw JPA-provider in te schakelen om erachter te komen welke instructies het probeert uit te voeren, en vooral in welke volgorde deze entiteiten worden insert
red.
Probeer ook, volgens bestaande opmerkingen, eerst de persoon vol te houden. Als je dit doet, denk ik dat de juiste manier is om de persistente toe te voegen entiteit aan de relatie, d.w.z.:
PersonEntity persistedPerson = em.persist(personTest);
projectTest.setPersonId(persistedPerson);
em.persist(projectTest);