Mysql
 sql >> база данни >  >> RDS >> Mysql

SpringDataJPA save OneToOne връзка получаване Не може да се добави или актуализира дъщерен ред:ограничение на външния ключ е неуспешно

Проблемът вероятно е вашата стратегия за генериране на идентификатор (при условие, че сте инициализирали правилно контакта). Потребителският обект трябва да бъде вмъкнат в DB, ​​за да има зададен идентификатор, но в същото време контактът се нуждае от този идентификатор, за да бъде валиден обект. И двамата трябва да се случват в същата транзакция.

Ако превключите нивото на регистриране на фино за вашия JPA (в perstitance.xml), най-вероятно ще видите последователността на вмъкване на потребител и контакт, но контактът ще има user_id 0.

Така че, а) уверете се, че сте задали изрично потребител във вашия контакт (както казахте, връзката се управлява от Contact. b) Задайте контакт на потребителя. в) продължават (в една транзакция). В зависимост от изпълнението на JPA може да не работи (проверете издадените заявки, най-вероятно ще има вмъкване при контакт и след това актуализиране). Променете стратегията за генериране на TABLE, като TABLE JPA взема следващия безплатен идентификатор, присвоява го на обекта и прави вмъкването, така че да е „известен“ преди вмъкването.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Промяна на колона срещу промяна на колона

  2. Derby или MySQL или...?

  3. Разлика между VARCHAR и TEXT в MySQL

  4. цел на максималното число в php &mysql

  5. SQLSTATE[22007]:Невалиден формат за дата и час:1366 Неправилна стойност на цяло число:'column_name' в Laravel