आपको दो त्रुटियां हैं।
पहली त्रुटि:आपने हेडर और विवरण के बीच द्विदिश संबंध को दो बार मैप किया:एक बार हेडर में, और एक बार विवरण में। जब आपके पास एक द्विदिश संघ होता है, तो 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()
का उपयोग करके उन्हें हटाना होगा। ।