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

SpringDataJPA gemmer OneToOne-relation får Kan ikke tilføje eller opdatere en underordnet række:en fremmednøglebegrænsning mislykkes

Problemet er sandsynligvis din id-genereringsstrategi (forudsat at du initialiserede kontakten korrekt). Brugerobjektet skal indsættes i DB for at få sit id sat, men samtidig skal kontakten have dette id for at være et gyldigt objekt. De skal begge ske i samme transaktion.

Hvis du ændrer logningsniveauet til fint for din JPA (i persitance.xml), vil du højst sandsynligt se rækkefølgen af ​​indsættelse af bruger og kontakt, men kontakten vil have user_id 0.

Så, a) sørg for, at du udtrykkeligt angiver bruger i din kontakt (som du sagde, at relationen administreres af kontakt. b) Indstil kontakt på brugeren. c) fortsætter (i én transaktion). Afhængigt af din implementering af JPA virker det muligvis stadig ikke (tjek de stillede forespørgsler, sandsynligvis vil der være indsat ved kontakt og derefter opdatere). Skift genereringsstrategien til TABLE, med TABLE tager JPA det næste ledige ID, tildeler det til objektet og laver indsættelsen, så det er "kendt" før indsættelsen.




  1. Hvordan indsætter man BLOB- og CLOB-filer i MySQL?

  2. Ekkolodsløber (ubuntu) udførelse mislykkedes:com.mysql.jdbc.Driver

  3. Gem GUID i MySQL fra C#

  4. SQL-heltalsområde ved oprettelse af tabeller