sql >> Database >  >> RDS >> Mysql

JPA OneToMany/ManyToOne-relatie werkt niet - Wat mis ik?

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);


  1. Voordelen van pdo boven mysql_* of mysqli_*

  2. SQL-sleutelwoord gebruiken in titel van tabel of kolom

  3. MySQL voegt geen backslash in

  4. MySQL-fout 2006 (HY000) op regel 406:MySQL-server is verdwenen