इसके अनुरूप HQL है
select header.advmagencymaster.mamaid,
header.advmagencymaster.mamaname,header.trohiono
from ADVRoheader header
लेकिन एचक्यूएल में पूरी वस्तु को पुनः प्राप्त करना बेहतर होता है ताकि हम अन्य गुणों का भी उपयोग कर सकें
from ADVRoheader header
inner join
header.advmagencymaster master
एचक्यूएल अंतर्निहित डेटाबेस पर निर्भर नहीं है। यह सभी डेटाबेस (ओरेकल, माइस्क्ल, एसक्यूएल सर्वर इत्यादि) के लिए समान होगा। केवल हमें मुख्य कॉन्फ़िगरेशन फ़ाइल में डेटाबेस कनेक्शन को बदलने की जरूरत है।
आपकी मॉडल कक्षाएं इस तरह दिखाई देंगी
class ADVMAgencyMaster{
private String mamaid;
private String mamaname; //getters and setters
}
class ADVRoheader{
private String trohiono;
private ADVMAgencyMaster advmagencymaster; // Reference to the ADVMAgencyMaster
//getters and setters}
आप पहले से ही xml में अनेक से एक संबंध परिभाषित कर चुके हैं
<many-to-one name="advmagencymaster" class="com.adv.hibernatebean.ADVMAgencyMaster" fetch="select"> <column name="TROHAMAID" /></many-to-one>
इसलिए ADVRoheader ऑब्जेक्ट लोड करते समय हाइबरनेट आंतरिक ऑब्जेक्ट संदर्भ "advmagencymaster" को भी लोड करेगा।
इसके लिए आपको फ़ेच ="सेलेक्ट" के बजाय आलसी ="झूठा" निर्दिष्ट करना होगा।
आलसी ="सच" - आलसी लोडिंग यह केवल मूल वस्तु को लोड करेगा
आलसी- "झूठा" - उत्सुक लोडिंग यह बच्चे (आंतरिक) वस्तु को भी मूल वस्तु के साथ लोड करेगा।
दोनों hbm.xml फ़ाइलों को मुख्य कॉन्फ़िगरेशन फ़ाइल (hibernate.cfg.xml) में निम्नानुसार जोड़ें
<mapping resource="com/ADVRoheader.hbm.xml"></mapping>
<mapping resource="com/ADVRomaster.hbm.xml"></mapping>
सेशन फ़ैक्टरी क्लोजिंग टैग से ठीक पहले यहाँ मैपिंग डेटाबेस के साथ हो रही है।
आमतौर पर जनरेटर तत्वों के लिए हमें टाइप इंटीजर का उपयोग करने और डेटाबेस में भी बदलाव करने की आवश्यकता होती है।
अतिरिक्त फ़िल्टरिंग हम मुख्य क्वेरी के बाद 'कहां' खंड जोड़ सकते हैं। यहां केवल शामिल होने की स्थिति की आवश्यकता है और इसे पहले से ही हाइबरनेट द्वारा नियंत्रित किया जाता है।