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()
.