sql >> Databasteknik >  >> RDS >> Mysql

@OneToMany-fel i MySQL:Kan inte ta bort eller uppdatera en överordnad rad:en främmande nyckel-begränsning misslyckas

Du har två fel.

Första felet:du mappade den dubbelriktade kopplingen mellan rubrik och detaljer två gånger:en gång i rubriken och en gång i detaljerna. När du har en dubbelriktad association, måste en av sidan (den ena rubriksidan, i det här fallet) deklareras som inversen av den andra sidan, med hjälp av mappedBy attribut:

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

Andra felet:DELETE-kaskaden tillämpas endast när du använder Session.delete() metod för att ta bort entiteten. Ta bort frågor kringgår sessionen helt (vilket betyder att de enheter som raderats av frågan men som tidigare laddats stannar i sessionen, i samma tillstånd som om ingen fråga hade körts).

Så för att kaskad raderingen måste du utföra en urvalsfråga för att hitta alla rubriker som ska raderas, och sedan loopa över dessa rubriker och ta bort dem med session.delete() .




  1. Hur fungerar för varje rad i triggers i mysql?

  2. PHP MYSQL dynamisk valruta

  3. 'Kan inte ansluta till MySQL-servern på \'db\' Django-Restframework med Mysql i docker

  4. Få alla användare utom nuvarande inloggade användare i laravel vältalig