2010-06-16 3 views
5

मैं अपने सर्वलेट/EJB/जेपीए-हाइबरनेट परियोजना में पृष्ठांकन को लागू करना चाहते हैं, लेकिन मैं क्वेरी से कैसे केवल एक पृष्ठ को समझ नहीं सकता और पता है पृष्ठों की संख्या मैंहम जेपीए के साथ अंतिम पृष्ठ की गणना कैसे कर सकते हैं?

प्रदर्शित करना चाहिए मैं

का उपयोग
setFirstResult(int first) ; 
setMaxResults(int max) ; 

और यह ठीक काम कर रहा है, लेकिन मुझे कैसे पता चलेगा कि कुल मिलाकर मेरे पास कितने पेज होंगे?

(हाइबरनेट मेरी जेपीए प्रदाता है, लेकिन मैं केवल जेपीए यदि संभव हो तो का उपयोग कर पसंद करेंगे)

अद्यतन: COUNT() बेहतर/सबसे आसान समाधान हो रहा है; लेकिन SELECT COUNT(*) FROM ... की लागत executeQuery("SELECT * FROM ...).getListResult().size() के साथ तुलना में क्या हो सकती है?

+1

भी इस सवाल देखें: http://stackoverflow.com/questions/168,084/वहाँ एक और अधिक कुशल तरह के- बना रही है-पृष्ठांकन-इन-हाइबरनेट से भी क्रियान्वित-se – serg

उत्तर

4

AFAIK, आपको या तो (1) गिनती या (2) पूरी हिट सूची पुनर्प्राप्त करने और स्मृति में अंकन करने की आवश्यकता है। पृष्ठों की संख्या कुल गणना/पृष्ठ आकार का दौर है।

वहाँ गिनती करने के लिए कई तरीके हैं, एक, की तरह में

Query query=em.createQuery("SELECT COUNT 
(emp.empName) FROM Employee emp"); 

या किसी अन्य असामान्य एक प्रक्षेपण

criteria.setProjection(Projections.rowCount()); 
int rowCount = (Integer) criteria.list().get(0); 

ध्यान दें कि मैं इस एक यद्यपि इस्तेमाल कभी नहीं उपयोग करने के लिए है COUNT(*) उपयोग करने के लिए है मैं बस इसे कहीं पढ़ें।

मैं इस सवाल का जवाब में पृष्ठांकन के बारे में कुछ अन्य विवरणों का दस्तावेज़ था:

आशा है कि यह मदद

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