sql >> Databáze >  >> RDS >> Mysql

SpringDataJPA uložení vztahu OneToOne získávání Nelze přidat nebo aktualizovat podřízený řádek:omezení cizího klíče selhalo

Problém je pravděpodobně ve vaší strategii generování id (za předpokladu, že jste kontakt správně inicializovali). Objekt uživatele musí být vložen do DB, aby bylo nastaveno jeho id, ale zároveň kontakt potřebuje, aby toto id bylo platným objektem. Oba musí proběhnou ve stejné transakci.

Pokud přepnete úroveň protokolování pro váš JPA na jemnou (v perstitance.xml), pravděpodobně uvidíte sekvenci vkládání uživatele a kontaktu, ale kontakt bude mít user_id 0.

Takže a) ujistěte se, že jste ve svém kontaktu explicitně nastavili uživatele (jak jste řekli, že vztah spravuje kontakt. b) Nastavte kontakt na uživatele. c) přetrvávají (v jedné transakci). V závislosti na vaší implementaci JPA to stále nemusí fungovat (zkontrolujte zadané dotazy, pravděpodobně dojde k vložení kontaktu a následné aktualizaci). Změňte strategii generování na TABLE, s TABLE JPA vezme další volné ID, přiřadí ho objektu a provede vložení tak, aby bylo „známé“ před vložením.




  1. Kde nastavím kódování znaků v aplikaci Java Swing, abych mohl zapisovat hindštinu do databáze MySQL?

  2. AWS RDS MySql – jak povolit přístup po nastavení „Veřejně dostupné“

  3. MySQL ERROR 1046 (3D000):Při aktualizačním dotazu není vybrána žádná databáze

  4. Jak vytvoříte verzi schématu databáze?