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

@OneToMany грешки в MySQL:Не може да се изтрие или актуализира родителски ред:ограничение на външния ключ е неуспешно

Имате две грешки.

Първа грешка:съпоставихте двупосочната връзка между заглавката и детайлите два пъти:веднъж в заглавката и веднъж в подробностите. Когато имате двупосочна асоциация, една от страните (в този случай едната заглавна страна) трябва да бъде декларирана като обратна на другата страна, като се използва mappedBy атрибут:

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

Втора грешка:каскадата DELETE се прилага само когато използвате Session.delete() метод за изтриване на обекта. Заявките за изтриване заобикалят сесията изцяло (което означава, че обектите, изтрити от заявката, но предварително заредени, остават в сесията в същото състояние, както ако не е била изпълнена заявка).

Така че, за да каскадирате изтриването, ще трябва да изпълните заявка за избор, за да намерите всички заглавки, които да изтриете, и след това да преминете през тези заглавки и да ги изтриете с помощта на 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. Извадете месец и ден mysql

  2. Начин за прекратяване на изпълнението на MySQL скриптове (може би пораждаща грешка)?

  3. комбиниране на mysql AND OR заявки в Codeigniter

  4. mysql Как да намеря разлика между два реда в една и съща таблица и да изброя несъответстващите записи? mysql намира несъвпадащи редове в таблица

  5. Отказан достъп; имате нужда (поне едно от) SUPER привилегията(ите) за тази операция