HQL

2009-06-10 10 views
34
में बिना संबद्धता के साथ जुड़ें

चलें कहते हैं कि मैं दो तालिकाओं है (ए, बी) की तरह:HQL

A {id, a, c} 
B {id, b, c} 

मैं भी उनकी संस्थाओं की है। मैं एक HQL लिखने के लिए इतना है कि परिणाम सेट तरह होगा चाहते हैं (जहां एसी = बीसी):

(a1, b1, c1) 
(a2, b2, c2) 
(a3, b3, c3) 
... 

on के बाद से खंड हाइबरनेट द्वारा समर्थित नहीं हैं मैं अटक हूँ और मैं कैसे क्वेरी लिखने के लिए पता नहीं है ।

from A as table_a , B as table_b 
where table_a.c = table_b.c 

बेशक वहाँ बाहरी इस तरह से जुड़ जाता है लागू करने के लिए है, तो आप कुछ परेशानी है कि यदि आपके मामला है हो सकता है कोई तरीका नहीं है:

उत्तर

44

आप अंकन में शामिल होने के पार का उपयोग करना होगा। hibernate-criteria-joining-table-without-a-mapped-association

+0

@ II-BHIMA क्या मैं इस सेनेनारियो में बाएं बाहरी शामिल होने का उपयोग कर सकता हूं – dom

1

आप बाहरी करना चाहते हैं में शामिल होने आप उप क्वेरी बनाने के लिए और प्रबंधन या संचालन कर सकते हैं (यह मेरे लिए काम करता है):

मानदंडों के साथ अनुरूप मामले के लिए देखें। यह क्वेरी और अधिक जटिल और सबसे खराब performant करते हैं लेकिन :-) काम करता है

0

अगर दोनों तालिका विदेशी कुंजी के माध्यम से एक दूसरे से जुड़े हुए हैं तो आप इस कोशिश कर सकते हैं:

करते हैं:

कुछ {आईडी (प्राथमिक कुंजी), ए, सी} बी {आईडी (विदेशी कुंजी), बी, सी}

बी क्लास के pojo में सेटटर और गेटर के साथ प्रकार के पैरेंट (ए) के एक चर को परिभाषित करता है। इसके बाद आप क्वेरी लिख सकते हैं इस तरह। इसे 'एए'

select tbl_b.a,tbl_a.a,tbl_b.b,tbl_a.b,tbl_b.c,tbl_a.c from B tbl_b inner join tbl_b.AA tbl_b 
संबंधित मुद्दे