संपादित करें: इस समस्या का समाधान इस सवाल के बारे में दूसरे और चौथे जवाब में प्रदान की जाती हैं setMaxResults for Spring-Data-JPA annotation?केवल प्रथम/अंतिम तत्व स्प्रिंग डाटा JPA और @query एनोटेशन का उपयोग कर लाई जा रही है
लक्ष्य: लायें सबसे बड़ा/सबसे छोटी एक वसंत डेटा जेपीए भंडार और वसंत क्वेरी एनोटेशन का उपयोग कर संपत्ति जेड द्वारा तत्व।
क्या मैं अब तक
@Query("SELECT xelement FROM x xelement ORDER BY xelement.z")
public List<X> findFirstElement();
समस्या है: इस क्वेरी सभी तत्वों को हासिल करेगा (जो वास्तव में प्रभावी नहीं है)। अगर मैं EntityManager direcly का प्रयोग करेंगे, मैं करने के लिए
entityManager.setMaxResults(1)
का उपयोग कर केवल पहला तत्व प्राप्त परिणामों की संख्या निश्चित कर सकता है।
प्रश्न: मैं @query एनोटेशन का उपयोग कर परिणाम की अधिकतम संख्या कैसे निर्दिष्ट करूँ?
आइडिया: आकार के पेजरक्वेट 0 का उपयोग करने का तरीका उपयोग कर रहा है?
बाधाएं: मुझे "FindFirstBy ...." क्वेरी सुविधा के बारे में पता है, लेकिन मैं @Query
एनोटेशन का उपयोग करना चाहता/चाहती हूं।
आपकी विधि 'सूची' क्यों लौटाती है जब इसे केवल एक तत्व लौटने की उम्मीद है? यदि क्वेरी वास्तव में सरल है, तो आप '@ क्वेरी' का उपयोग करने से बच सकते हैं और बस 'findFirstOrderByZ() 'ढूंढ सकते हैं। अन्यथा, आपको 'LIMIT' कीवर्ड का उपयोग करना होगा, 'x.z LIMIT 1' द्वारा xelement x ORDER से X चुनें। –
manish
@manish: 1. सूची के संबंध में, यह केवल लचीला होना था अगर मैं वस्तुओं की मनमानी संख्या स्विच करता, लेकिन हां, सिद्धांत रूप में आप सही हैं, इस मामले में एक सूची लौटना अधिक है। 2. "ढूंढें सबसे पहले .." -> बाधाओं को देखें। 3. क्या आप सुनिश्चित हैं कि सीमा कीवर्ड जेपीक्यूएल में उपलब्ध है? मुझे लगता है कि मुझे इसे जांचना है .... मैंने http://stackoverflow.com/questions/9314078/setmaxresults-for-spring-data-jpa-annotation भी पाया जो समस्या को हल करता है। –
इसे [http: // stackoverflow में दूसरे और चौथे उत्तर से ढंकने के लिए मिला।com/प्रश्न/9314078/setmaxresults के लिए वसंत-डेटा-जेपीए-एनोटेशन] [1] [1]: http://stackoverflow.com/questions/9314078/setmaxresults-for-spring-data -jpa-annotation –