मुझे जेपीए में नामांकित क्वेरीज़ का विचार स्थिर प्रश्नों के लिए पसंद है, लेकिन मैं अक्सर पूछताछ के साथ-साथ क्वेरी के कुछ सबसेट से परिणाम सूची के लिए गिनती परिणाम प्राप्त करना चाहता हूं। मैं दो लगभग समान नामांकित क्वेरीज़ नहीं लिखूंगा।क्या परिणाम सेट के साथ जेपीए नामांकित क्वेरी के लिए गणना आकार प्राप्त करने का कोई तरीका है?
@NamedQuery(name = "getAccounts", query = "SELECT a FROM Account")
.
.
Query q = em.createNamedQuery("getAccounts");
List r = q.setFirstResult(s).setMaxResults(m).getResultList();
int count = q.getCount();
तो मान लीजिए कि मीटर 10 है, रों 0 और वहाँ खाते में 400 पंक्तियों हैं: आदर्श रूप में, मैं क्या करना चाहते हैं की तरह कुछ है। मैं उम्मीद करता हूं कि इसमें 10 वस्तुओं की सूची होगी, लेकिन मैं जानना चाहता हूं कि कुल 400 पंक्तियां हैं। मैं एक दूसरे @NamedQuery लिख सकते हैं:
@NamedQuery(name = "getAccountCount", query = "SELECT COUNT(a) FROM Account")
लेकिन यह एक सूखी उल्लंघन है कि अगर मैं हमेशा से ही गिनती चाहते करने जा रहा हूँ करने के लिए लगता है। इस साधारण मामले में दोनों को सिंक में रखना आसान है, लेकिन अगर क्वेरी बदलती है, तो यह आदर्श से कम लगता है कि मुझे मूल्यों को लाइन में रखने के लिए @NamedQueries दोनों को अपडेट करना होगा।
यहां एक सामान्य उपयोग केस आइटम के कुछ सबसेट लाएगा, लेकिन कुल गणना ("400 के 1-10 प्रदर्शित करना") को इंगित करने के कुछ तरीके की आवश्यकता है।
अंत में नाम QUERY के लिए भी काम कर रहा है! धन्यवाद – Zavael
दिलचस्प, मुझे यह भी पता नहीं था कि एनोटेशन को कॉन्फ़िगर करते समय आप स्थिर फाइनल का संदर्भ दे सकते हैं। हालांकि, मुझे लगता है कि एक समाधान जिसे दो अलग-अलग नामित प्रश्नों की आवश्यकता नहीं है, अभी भी आदर्श होगा। – aroth