sql >> Database teknologi >  >> RDS >> Mysql

JPA OneToMany/ManyToOne-forholdet virker ikke - Hvad mangler jeg?

Det vigtigste, du vil være opmærksom på, er at definere ejersiden af forholdet korrekt. Så vidt jeg husker, var mit udgangspunkt fra den (til tider svære at forstå) officielle dokumentation, at ejersiden stort set er den, der som standard vil udløse kaskader og gennemsigtige sletninger.

For eksempel har du i ovenstående defineret ejersiden som ProjectEntity , så det vigtigste trin for at cascaded persistens fungerer, er at tilføje projektet til PersonEntity.projects .

Du vil derefter ringe til persist på ejersiden af ​​forholdet, dvs.

em.persist(projectTest);

Hvis dette ikke hjælper, vil jeg foreslå, at du aktiverer SQL-logning i din JPA-udbyder for at finde ud af, hvilke sætninger den forsøger at udføre, og især i hvilken rækkefølge disse entiteter bliver insert red.

Prøv også, i henhold til eksisterende kommentarer, at vedholde personen først. Hvis du gør dette, tror jeg, at den korrekte måde er at tilføje den vedvarende enhed til forholdet, dvs.:

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


  1. Kan ikke oprette forbindelse til server - En netværksrelateret eller instansspecifik fejl

  2. Oracle datoforskel for at få antal år

  3. Hvorfor returnerer denne sql-forespørgsel ingen resultater ved sammenligning af flydende kommatal?

  4. Mit program er ikke i stand til at gemme værdier i MySQL ved hjælp af mysql connector lib i Python