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

@OneToMany kesalahan di MySQL:Tidak dapat menghapus atau memperbarui baris induk:batasan kunci asing gagal

Anda memiliki dua kesalahan.

Kesalahan pertama:Anda memetakan hubungan dua arah antara tajuk dan detail dua kali:sekali di tajuk, dan sekali di detail. Bila Anda memiliki asosiasi dua arah, salah satu sisi (satu sisi header, dalam hal ini) harus dideklarasikan sebagai kebalikan dari sisi lainnya, menggunakan mappedBy atribut:

@OneToMany(fetch = FetchType.EAGER, orphanRemoval = true, mappedBy = "reminderHeader")
@Cascade(value = { CascadeType.SAVE_UPDATE, CascadeType.DELETE })
@Fetch(FetchMode.SELECT)
private Set<ReminderDetails> reminderDetailslist;

Kesalahan kedua:kaskade DELETE hanya diterapkan saat Anda menggunakan Session.delete() metode untuk menghapus entitas. Hapus kueri melewati sesi sepenuhnya (artinya entitas yang dihapus oleh kueri tetapi dimuat sebelumnya tetap berada di sesi, dalam status yang sama seolah-olah tidak ada kueri yang dieksekusi).

Jadi, untuk mengalirkan penghapusan, Anda harus menjalankan kueri pemilihan untuk menemukan semua header yang akan dihapus, lalu mengulang header ini dan menghapusnya menggunakan session.delete() .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memigrasikan MySQL ke PostgreSQL di AWS RDS, Bagian 4

  2. Mengisi menu dropdown dengan hasil database di Laravel 4

  3. MYSQL mencari ID dalam array dari DB

  4. batas mysql di dalam grup?

  5. Lumen 5.6 Kesalahan Migrasi Kunci yang ditentukan terlalu panjang panjang kunci maks adalah 767 byte