sql >> Database teknologi >  >> RDS >> Mysql

@OneToMany fejl i MySQL:Kan ikke slette eller opdatere en overordnet række:en fremmed nøgle begrænsning mislykkes

Du har to fejl.

Første fejl:du kortlagde den tovejsforbindelse mellem overskrift og detaljer to gange:én gang i overskriften og én gang i detaljerne. Når du har en tovejstilknytning, skal den ene side (den ene overskriftsside, i dette tilfælde) erklæres som den omvendte af den anden side ved hjælp af mappedBy attribut:

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

Anden fejl:DELETE-kaskaden anvendes kun, når du bruger Session.delete() metode til at slette enheden. Slet forespørgsler går helt uden om sessionen (hvilket betyder, at de enheder, der er slettet af forespørgslen, men tidligere indlæst, forbliver i sessionen, i samme tilstand, som hvis ingen forespørgsel var blevet udført).

Så for at kaskade slette sletningen skal du udføre en valgforespørgsel for at finde alle de overskrifter, der skal slettes, og derefter gå over disse overskrifter og slette dem ved hjælp af session.delete() .




  1. Hvorfor genererer Entity Framework indlejrede SQL-forespørgsler?

  2. HA for MySQL og MariaDB - Sammenligning af Master-Master-replikering med Galera Cluster

  3. Indsendelsesformularen forbliver ikke på samme side

  4. Sådan konverteres Unix-epoke til et tidsstempel