2012-09-28 13 views
7

हम पेजरक्वेट के साथ स्प्रिंग डेटा का उपयोग कर रहे हैं और डेटा का एक बड़ा सेट सेट कर रहे हैं। पृष्ठों की कुल संख्या प्राप्त करने के लिए निष्पादित किए जा रहे क्वेरी को छोड़कर सभी प्रश्न बेहतरीन प्रदर्शन करते हैं। क्या इस सुविधा को अक्षम करने का कोई तरीका है या क्या हमें सबसे अधिक संभावना है कि हम अपना खुद का पेजेबल लागू कर सकें?कुल पृष्ठ प्राप्त करने के लिए पेजरक्वेट से गिनती क्वेरी को अक्षम करने का तरीका?

http://static.springsource.org/spring-data/data-commons/docs/1.3.2.RELEASE/api/org/springframework/data/domain/PageRequest.html

http://static.springsource.org/spring-data/data-commons/docs/1.3.2.RELEASE/api/org/springframework/data/domain/Pageable.html

संपादित करें: आगे के विश्लेषण के बाद मेरा मानना ​​है कि इस समस्या को हल एक ही रास्ता स्प्रिंग डाटा का उपयोग करें और EntityManager का उपयोग नहीं करने के लिए के रूप में यह करने के लिए शुरू पंक्ति और अभिलेखों की संख्या की स्थापना की अनुमति देता है वापसी। हमें केवल तभी आवश्यकता है कि अगला पृष्ठ उपलब्ध है या नहीं, इसलिए हम केवल एक अतिरिक्त रिकॉर्ड पुनर्प्राप्त करें। हमें एक गतिशील क्वेरी की भी आवश्यकता है जो वसंत डेटा में संभव नहीं लगती है।

संपादित करें 2: और ऐसा लगता है कि मैंने कुछ प्रतिक्रियाओं के लिए काफी देर तक इंतजार नहीं किया था। धन्यवाद दोस्तों!!!

उत्तर

17

यह प्राप्त करने का तरीका बस List का उपयोग करके वापसी मूल्य के रूप में उपयोग कर रहा है। तो भंडार इस तरह परिभाषित के लिए उदाहरण के लिए:

interface CustomerRepository extends Repository<Customer, Long> { 

    List<Customer> findByLastname(Stirng lastname, Pageable pageable); 
} 

क्वेरी निष्पादन इंजन ऑफसेट लागू करते हैं और Pageable द्वारा के रूप में हाथ pagesize लेकिन अतिरिक्त गिनती क्वेरी ट्रिगर नहीं के रूप में हम एक Page का निर्माण करने की जरूरत नहीं है जाएगा उदाहरण। यह संदर्भ दस्तावेज के relevant sections में भी दस्तावेज किया गया।

+0

हैलो ओलिवर, क्या findAll() विधि का उपयोग करके ऐसा करना संभव है? कुछ सूची findAll (पेजेबल पेजेबल) की तरह कुछ? (ताकि कुछ ऐसा उत्पन्न करना संभव हो: जैसे * xxx LIMIT द्वारा तालिका ऑर्डर से चुनें)? मुझे यह नहीं पता था कि इसे कैसे किया जाए (और इस धागे में राल्फ के साथ "लौ युद्ध" शुरू किया) :-) –

+0

क्या होगा यदि मैं उन्हें एक पृष्ठ में प्राप्त करना चाहता हूं? यही है, अंकन को अनदेखा कर रहा है। क्या मैं कुछ नया पेजरक्वेट (0, 0) की तरह कुछ कर सकता हूं? – Stephane

+0

@StephaneEybert - यदि आप सबकुछ चाहते हैं, तो बस अपनी विधि परिभाषा से पेजेबल पैरामीटर को छोड़ दें। बेशक आपको इस और विशाल डेटासेट के साथ सावधान रहना होगा। – JBCP

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

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