2010-03-12 12 views
5

में व्युत्पन्न तालिका का उपयोग करके सबक्वायरी मेरे पास एक हाइबरनेट एचक्यूएल प्रश्न है। मैं एक व्युत्पन्न तालिका (प्रदर्शन कारणों के लिए) के रूप में एक सबक्वायरी लिखना चाहता हूं। क्या एचक्यूएल में ऐसा करना संभव है? उदाहरण:हाइबरनेट एचक्यूएल

FROM Customer WHERE country.id in 
(SELECT id FROM (SELECT id FROM Country where type='GREEN') derivedTable) 

(btw, यह सिर्फ एक नमूना क्वेरी तो यह फिर से लिखने के बारे में सलाह देना नहीं है, बस ली गई तालिका अवधारणा मैं में दिलचस्पी रखता हूँ है)

उत्तर

2

दुर्भाग्य से नहीं, व्युत्पन्न तालिकाओं वर्तमान में एचक्यूएल में काम नहीं करते हैं। उदाहरण के लिए, निम्न कार्य:

List<int> result = 
    nHSession.CreateQuery(@"select distinct Id from User u") 
    .List<int>().ToList(); 

... निम्नलिखित इस अपवाद फेंकता है: प्रकार के अपवाद 'Antlr.Runtime.NoViableAltException' फेंका गया था। लाइन 1, स्तंभ 24 के पास

List<int> result = nHSession.CreateQuery(
    @"select distinct Id from (select u from User u)") 
    .List<int>().ToList(); 

गिरावट वापस एक नामित क्वेरी के लिए कच्चे एसक्यूएल या युक्त बनाने के लिए किया जाएगा [से अलग आईडी चुनने (S2.BP.Model.User यू से यू चुनें)] इसलिए जैसे एक संग्रहीत प्रक्रिया बना सकते हैं और नामित क्वेरी के माध्यम से यह आह्वान,:

List<int> result = nHSession.GetNamedQuery("spUserIds") 
    .SetInt32("id", 3) 
    .List<int>().ToList(); 
1

आप http://blog.eyallupu.com/2009/07/hibernate-derived-properties.html

में अपने ब्लॉग पर ली गई संपत्तियों और प्रदर्शन विचार के बारे में कुछ जानकारी मिल सकती है

आशा है कि यह मदद मिलेगी,
ईयाल लुपू

+0

दिलचस्प लेख है, लेकिन वास्तव में नहीं प्रश्न से संबंधित। –

संबंधित मुद्दे