2015-05-27 7 views
8

मैं बिना किसी समस्या के स्प्रिंग डेटा भंडार का उपयोग कर रहा हूं। जब मैंने पेजिंग (पेजेबल इंटरफेस का उपयोग करके) जोड़ने की कोशिश की तो यह ठीक काम करता था।स्प्रिंग डेटा हाइबरनेट + पेजेबल: रिक्त परिणाम लौटाता है

हालांकि, जब लौटा परिणाम सेट पृष्ठ आकार कम होता है, तो परिणाम खाली होता है।

निम्नलिखित मेरा पृष्ठ है। इंडेक्स और ऑब्जेक्ट्स के लिए डिफ़ॉल्ट मान क्रमशः 0 और 10 हैं।

new PageRequest(pageIndex_, objectsPerPage_, new Sort(orders)) 

एक क्वेरी के साथ इसका उपयोग करते समय जो 10 से कम परिणाम देता है, परिणामी सूची खाली होती है।

repository.findAll(MySpecification.searchClients(criteria), 
      myPagingSpecification(criteria.getPageIndex(), criteria.getNumberPerPage(), null)) 
      .getContent(); 

संपादित करें 1 मैं इस का कारण नहीं मिला, हालांकि मैं अभी भी एक समाधान या एक समाधान के लिए खोज कर रहा हूँ:

यह कैसे मैं सेवा परत में भंडार का उपयोग करें।

 Long total = QueryUtils.executeCountQuery(getCountQuery(spec)); 
    List<T> content = total > pageable.getOffset() ? query.getResultList() : Collections.<T> emptyList(); 

इस कोड, SimpleJpaRepository वर्ग में स्थित select count... बना देता है और अगर गिनती कम ऑफसेट है, एक खाली सूची देता है।

उत्तर

3

PageRequest कार्यान्वयन के अनुसार:

public int getOffset() { 
    return page * size; 
} 

ताकि आप सेट page0 को offset मूल्य भी 0 होना चाहिए और नहीं हो सकता से बड़ा total (total > 0 अगर) है।

चेक (शायद डीबगर में) pageIndex मूल्य जो आप वसंत-डेटा पर जाते हैं। यह अन्य मूल्य हो सकता है - कभी-कभी यह सरल गलती है।

+4

धन्यवाद। समस्या यह थी कि मेरी आरईएसटी सेवाओं से क्वेरी पैरामीटर 'पृष्ठ = 1' था और मैं भूल गया था कि पेज 0 आधारित हैं, लेकिन मेरा एपीआई नहीं है। –

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