java - Joining tables in hibernate -
मेरे पास दो टेबल हैं
ग्राहक दर ---------- --- ----------- res_number उत्पाद रणनीति का नाम fname प्रकार lname दर ...... ......
और मैंने दो बीन्स बनाईं < / P>
1 2. @ एंटिटी @ एंटिटी @Table (name = "customer") @Table (name = "rates") कर्मचारी विवरण (कार्ड का विवरण {@Col (name = "res_number") @col (name = "product") स्ट्रिंग रेनम; स्ट्रिंग उत्पाद; ............}}
अब मेरे पास क्वेरी है
<प्री> hql = "कार्ड से संबंधित सीडी, कर्मचारी डिलीवरी ed जहां ed रणनीति = सीडी। प्रोडक्ट "
लेकिन यह मुझे संदर्भ देता है hibernate.QueryException: संपत्ति को हल नहीं कर सका:
मैंने जोड़ने का प्रयास किया
< प्री> @OneToOne (मैप किए गए = "रणनीति") @ कैस्केड (मान = कैस्केड टाइप। एएल) निजी कर्मचारी विवरण empDetails; CardDetails में
लेकिन मुझे कोई त्रुटि नहीं कह रहा है कि OneToOne संभव है और ... कई सेन्टर और एकटैम में बदलने की कोशिश की लेकिन काम नहीं करता किसी को भी कृपया मुझे बताओ कैसे एनोटेशन के साथ जुड़ने के लिए बीन्स को मैप करने के लिए? नोट: डेटाबेस सही तरीके से तैयार नहीं है और दोनों तालिकाओं में कोई समान फ़ील्ड नहीं है (जैसे कि एक विदेशी कुंजी)। इसलिए किसी भी मदद की सराहना की जाती है।
संपादित करें:
सेम जोड़ना:
@ एंटीटी @Table (नाम = "दर") सार्वजनिक वर्ग के कार्ड विवरण {@Id @Column (name = "CARD_NAME") स्ट्रिंग कार्डनाम; @ कॉलम (name = "CARD_TYPE") स्ट्रिंग कार्ड टाइप; @ कॉलम (name = "FAQ_PAGE") स्ट्रिंग faqPage; @ कॉलम (नाम = "GEN_INTRO_DISCL") स्ट्रिंग genIntroDiscl; @ कॉलम (नाम = "GEN_REGULAR_RATE") स्ट्रिंग जनरल रीगलर; @ कॉलम (name = "BT_FEE") स्ट्रिंग बीटीएफआई; @ कॉलम (नाम = "बोनस") स्ट्रिंग बोनस; @ कॉलम (नाम = "ART_WORK") स्ट्रिंग कलावर्क; @ कॉलम (name = "DISCLOSURE_LINK") स्ट्रिंग प्रकटीकरण लिंक; @ कॉलम (name = "TERMS_LINK") स्ट्रिंग शब्द लिंक; @ कॉलम (नाम = "PRODUCT") स्ट्रिंग उत्पाद; @ एंटिटी @Table (नाम = "ग्राहक") @ सेकंडेरी टेबल (नाम = "आवेदनकर्ता") सार्वजनिक श्रेणी के कर्मचारी विवरण {@Id @Column (name = "RESERVATION_NUMBER") स्ट्रिंग आरक्षित संख्या; @ कॉलम (नाम = "एसएसएन") इंट एसएसएनएनम्बर; @ कॉलम (name = "BANK_NUMBER") स्ट्रिंग बैंक नंबर; @ कॉलम (नाम = "BRANCH_NUMBER") स्ट्रिंग शाखा नंबर; @ कॉलम (नाम = "EMPLOYEE_ID") स्ट्रिंग empId; @ कॉलम (नाम = "स्ट्रैटेजी") स्ट्रिंग रणनीति;
अपने HQL के दिखने से, आप उपयोग करके दो तालिकाओं में शामिल होना चाहते हैं ग्राहक तालिका में स्ट्रेटटी
और दर तालिका में उत्पाद
। इसका अर्थ यह होगा कि रणनीति
एक विदेशी कुंजी है।
यदि यह वास्तव में एक से एक संबंध है, तो कार्ड के विवरण के अंदर, यह प्रयास करें:
@OneToOne @JoinColumn (नाम = "उत्पाद", संदर्भित कॉलमनाम = "रणनीति") निजी कर्मचारी विवरण कर्मचारी विवरण;
यह मानता है कि आपके पास पहले ही उत्पाद
नहीं है, अगर आप कार्ड डिक्टेट में एक प्रॉपर्टी के रूप में मैप किए गए हैं, तो आपको इसे इस तरह करना होगा, अन्यथा सीतनिद्रा में होना डुप्लिकेट फील्ड मैपिंग के बारे में शिकायत करेगा।
@Column (name = "product", columnDefinition = "char") निजी स्ट्रिंग उत्पाद; @OneToOne @JoinColumn (नाम = "उत्पाद", संदर्भित कॉलमनाम = "रणनीति", insertable = false, updatable = false) निजी कर्मचारी विवरण कर्मचारी विवरण;
अगर इसे एक-से-कई रिश्ते की जरूरत है, तो ऐसा करें:
@column (name = "product", columnDefinition = "चार") निजी स्ट्रिंग उत्पाद; @OneToMany @JoinColumn (नाम = "उत्पाद", संदर्भित कॉलमनाम = "रणनीति", डालने योग्य = गलत, अद्यतन करने योग्य = गलत) निजी सूची & lt; कर्मचारी विवरण & gt; employeeDetails;
Comments
Post a Comment