केन चैन ने कहा, आप इसे सीधे एक एकल एचक्यूएल क्वेरी में नहीं कर सकते हैं।
के संबंध में अपने तीन संभावनाएं:
- मूल निवासी एसक्यूएल: सिफ़ारिश लायक नहीं। बाहरी जोड़ों के लिए वाक्यविन्यास विभिन्न डेटाबेस के बीच काफी अलग है।
- एक रिश्ता जोड़ें: यही वह है जो मैं करूँगा। इसका अधिक कोड या स्मृति खर्च नहीं होता है और इसे जल्दी से प्रोग्राम किया जाता है।
- आंतरिक शामिल हों: यदि कनेक्शन वास्तव में डेटाबेस में बाहरी शामिल होता है तो यह काम नहीं करता है (गायब पंक्तियां)।
तुम सच में संबंध जोड़ने के लिए नहीं करना चाहते हैं किसी विशेष कारणों से हैं, तो आप क्वेरी दो व्यक्तिगत क्वेरी में उदाहरण के लिए इस तरह विभाजित है और जावा में मैन्युअल रूप से परिणाम शामिल हो सकते हैं,:
Query qa = session.createQuery("from A a");
List la = qa.list();
Query qb = session.createQuery("select distinct b.* from B b, A a where a.some=b.some");
List lb = qb.list();
Map bMap = new HashMap();
for (B b : lb) {
bMap.put(b.getId(), b);
}
/* example with for loop */
for (A a : la) {
B b = bMap.get(a.getForeignKeyForB());
/* now you have A a and the outer joined B b and you can do with them what you want */
...
}
इस समाधान में (लगभग) निष्पादन समय और स्मृति में समान लागत है क्योंकि बाहरी डेटाबेस (समाधान 2.) में शामिल होता है। यह सिर्फ थोड़ा और जावा कोड है।
(समाधान केन चान द्वारा प्रस्तावित है कि एक के समान है, लेकिन यह "नहीं में" और भीतरी का चयन करें, जो दोनों डेटाबेस में अक्षम हो सकता है बचा जाता है।)
क्रिस्टल तेज। धन्यवाद! –
क्या आप नए "शामिल हों" विकल्प के वाक्यविन्यास के स्रोत को इंगित कर सकते हैं? मैंने ए.एक्स = बी.ई. पर एक बाएं जॉइन बी बी से चयन करने की कोशिश की और अभी भी 'org.hibernate.hql.internal.ast.QuerySyntaxException: पथ में शामिल होने की उम्मीद है!'। (मैंने 'हाइबरनेट-कोर' संस्करण 5.1.0 जोड़ा। मेरे मैवेन पोम फ़ाइल के लिए अंतिम, अन्य कलाकृतियों को मेरे पुराने संस्करणों में होना चाहिए। लेकिन जैसा कि मैंने पढ़ा [एचएचएच -16] (https://hibernate.atlassian.net/projects/ एचएचएच/मुद्दों/एचएचएच -16? फिल्टर = allissues और orderby = वोट + डीईएससी% 2 सी + प्राथमिकता + डीईएससी% 2 सी + अद्यतन + डीईएससी), यह पर्याप्त होना चाहिए।) – Joe7
अद्यतन के लिए धन्यवाद और बंद मुद्दे पर सूचक। –