sql >> Databasteknik >  >> RDS >> Mysql

JPA OneToMany/ManyToOne-relationen fungerar inte - Vad saknar jag?

Det viktigaste du vill se upp med är att definiera ägarsidan av förhållandet korrekt. Såvitt jag minns, var det jag tog med från den (ibland svårbegripliga) officiella dokumentationen att ägarsidan i stort sett är den som som standard kommer att utlösa kaskader och genomskinliga raderingar.

Till exempel, i ovanstående har du definierat ägarsidan som ProjectEntity , så det viktigaste steget för att kaskadbeständighet ska fungera är att lägga till projektet i PersonEntity.projects .

Du kommer då att vilja ringa persist på ägarsidan av relationen, d.v.s.

em.persist(projectTest);

Om detta inte hjälper, skulle jag föreslå att du aktiverar SQL-loggning i din JPA-leverantör för att ta reda på vilka satser den försöker köra, och speciellt i vilken ordning dessa enheter insert red.

Försök också, enligt befintliga kommentarer, att bevara personen först. Om du gör detta tror jag att det korrekta sättet är att lägga till bevarad enhet till förhållandet, dvs:

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


  1. Hur man får id från databasen genom att klicka på listview-objektet i Android

  2. Hur man får motsvarande ResultSetMetaData utan ResultSet

  3. SQL Server:Databasen har fastnat i återställningsläge

  4. Fånga länkade serverfel