मैं जावा के साथ हाइबरनेट 3.0 का उपयोग कर रहा हूं।हाइबरनेट के माध्यम से डेटाबेस से एक पंक्ति और उसके सभी संदर्भों को कैसे हटाएं?
मेरे पास निम्नलिखित कक्षाएं हैं।
Teacher.java
private long id;
private String teacherName;
private List<Student> students;
// getter-setter of all
Subject.java
private long id;
private String subjectName;
private List<Student> students;
// getter-setter of all
Student.java
private long id;
private String studentName;
// getter-setter of both
Teacher.hbm.xml
<class name="Teacher" table="teacher_master">
<!--other mappings-->
<list name="students" cascade="refresh" table="teacher_student_master">
<key column="teacher_id"/>
<index column="student_teacher_position" type="integer"/>
<many-to-many class="Student" column="student_id"/>
</list>
</class>
Subject.hbm.xml
<class name="Subject" table="subject_master">
<!--other mappings-->
<list name="students" cascade="refresh" table="subject_student_master">
<key column="subject_id"/>
<index column="student_subject_position" type="integer"/>
<many-to-many class="Student" column="student_id"/>
</list>
</class>
Student.hbm.xmlआईडी & studentName संपत्तियों के लिए मैपिंग शामिल हैं।
समस्या का सामना करना पड़ रहा हूँ है:
मैं हाइबरनेट के माध्यम से student_master से एक पंक्ति को हटा दें।
Student stu = new Student();
stu.setId(1l);
session.delete(stu);
transaction.commit();
लेकिन नष्ट कर दिया छात्र की संदर्भ (आईडी = 1) टेबल teacher_student_master और subject_student_master से नहीं हटाया जाता।
मैं इस मुद्दे को कैसे दूर कर सकता हूं?
नोट: अगर मैं & क्वेरी फायरिंग कोडिंग के बजाय हाइबरनेट के साथ किसी प्रकार की कॉन्फ़िगरेशन करके इस समस्या को दूर कर सकता हूं तो यह बहुत अच्छा होगा।
संपादित करें: मैंने यह link देखा है। लेकिन उसमें, यह उल्लेख किया गया है कि मुझे कुछ कोडिंग करने की ज़रूरत है, पहले छात्र = 1 से जुड़े सभी शिक्षकों को प्राप्त करें, फिर छात्र & की सूची से छात्र = 1 को हटा दें और फिर शिक्षक को अपडेट करें। मैं इस कोडिंग से बचना चाहता हूं। क्या यह संभव है?
@RAS एक्सएमएल मानचित्रण एनोटेशन का उपयोग किया जाता है, नहीं यह है। यदि आप एचबीएम मैपिंग का उपयोग करके जवाब प्रदान करते हैं तो यह बेहतर होगा। –
मैंने आपके द्वारा दिए गए दोनों लिंक देखे हैं। लेकिन दोनों लिंक में, यह उल्लेख किया गया है कि मुझे कुछ कोडिंग करने की ज़रूरत है, पहले छात्र = 1 से जुड़े सभी शिक्षकों को प्राप्त करें, फिर छात्र की सूची से छात्र = 1 हटाएं और फिर शिक्षक को अपडेट करें। मैं इस कोडिंग से बचना चाहता हूं। क्या यह संभव है? – RAS
ठीक है, मान लीजिए कि आपके पास निम्नलिखित सारणीएं हैं: छात्र, शिक्षक और पाठ्यक्रम (जो छात्र और शिक्षक को जोड़ता है)। छात्र के पाठ्यक्रम के संदर्भ में DELETE_ORPHAN का उपयोग करके, छात्र = 1 को हटाने से इस पाठ्यक्रम के सभी संबंधों को भी हटा दिया जाएगा। आपको सभी पाठ्यक्रमों को लाने और उन्हें मैन्युअल रूप से हटाने की आवश्यकता नहीं है, हाइबरनेट आपके लिए ऐसा करेगा। – Thiago