Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SpringDataJPA menyimpan hubungan OneToOne menjadi Tidak dapat menambah atau memperbarui baris anak:batasan kunci asing gagal

Masalahnya mungkin adalah strategi pembuatan id Anda (asalkan Anda menginisialisasi kontak dengan benar). Objek pengguna harus dimasukkan ke DB agar idnya disetel, tetapi pada saat yang sama Kontak membutuhkan id ini untuk menjadi objek yang valid. Keduanya harus terjadi dalam transaksi yang sama.

Jika Anda mengubah level logging ke fine untuk JPA Anda (dalam perstitance.xml), kemungkinan besar Anda akan melihat urutan penyisipan pengguna dan kontak tetapi kontak akan memiliki user_id 0.

Jadi, a) pastikan Anda secara eksplisit mengatur pengguna di kontak Anda (seperti yang Anda katakan bahwa relasi dikelola oleh Kontak. b) Setel kontak pada pengguna. c) bertahan (dalam satu transaksi). Tergantung pada implementasi JPA Anda, ini mungkin masih tidak berfungsi (periksa kueri yang dikeluarkan, kemungkinan besar akan ada sisipan pada kontak dan kemudian perbarui). Ubah strategi pembuatan menjadi TABLE, dengan TABLE JPA mengambil ID gratis berikutnya, menetapkannya ke objek dan melakukan penyisipan sehingga "diketahui" sebelum penyisipan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah SQL dump ke JSON?

  2. Penggunaan mysql dari addlashes()

  3. perbarui tabel dengan data dari tabel lain jika tidak nol?

  4. Tidak mengambil daftar skema dari sumber saat bermigrasi dari MSSQL ke MySQL menggunakan Workbench

  5. Batch pegas dengan alias kolom sebagai kunci pengurutan - pernyataan di mana salah format