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