2011-12-30 17 views
7

मैं तालिका से सभी परिणामों की बजाय लौटाई गई पंक्तियों की गणना करने की कोशिश कर रहा हूं।हाइबरनेट क्वेरी भाषा में पंक्तियों की गणना कैसे करें?

मैंने देखा कि यह इस तरह से किया जा सकता है कि:

((Integer) session.createQuery("select count(*) from ....").iterate().next()).intValue() 

लेकिन मैं एक गतिशील क्वेरी का उपयोग कर रहा है जब एक पूर्णांक प्रारूप में इस क्वेरी (यह कहते Query to Integer से परिवर्तित नहीं कर सकते)

संगृहीत करने का प्रयास जहां मूल्यों इस

theQuery = "select count(*) from THM as thm " + 
       "join thm.TMC as tmc " + 
       "join tmc.TIMCC as timcc " + 
       "where thm.Qid = :Qid and thm.Cv = :Cv and timcc.Did = :Did and timcc.Cv= :Cv"; 

Query query = session.createQuery(theQuery); 
query.setInteger("Qid", Integer.parseInt(Qid)); 
query.setInteger("Did", Did); 
query.setInteger("Cv",cV); 

जैसी क्वेरी नीचे उल्लेख किया जाएगा अब, मैं कैसे एक va में हाइबरनेट क्वेरी का उपयोग करके लौटे सभी पंक्तियों की गिनती प्राप्त कर सकते हैं list.size का उपयोग किए बिना व्यवहार्य लेकिन सीधे पूछताछ से?

उत्तर

13

क्या आपने query.uniqueResult(); ? चूंकि आपकी चयन गिनती (*) आपको केवल एक नंबर देगी, आपको इसे int count = (Integer) query.uniqueResult() के साथ पुनर्प्राप्त करने में सक्षम होना चाहिए;

Criteria criteria = currentSession().createCriteria(type); 
criteria.setProjection(Projections.rowCount()); 
criteria.uniqueResult(); 

मैं मानदंड अभी तो मुझे यकीन है कि यह काम करता है के लिए पता उपयोग कर रहा हूँ:

एक मानदंड आप यह कर सकते हैं के आधार पर गिनती करने के लिए। http://www.jroller.com/RickHigh/entry/hibernate_pagination_jsf_datagrid_prototype1

+0

query.uniqueResult(); बहुत अच्छा काम कर रहा है और ऐसा करता है .iterate()। अगला()) .intValue() – user1002782

+0

क्या होगा यदि मेरी क्वेरी गिनती नहीं है (*) इसके बजाय यह "THM से" – Jerry

7

आप कर सकते हैं इस

long count = (long)session.createQuery("SELECT COUNT(e) FROM Employees e").getSingleResult(); 
6

यह प्रयास करें: मैं एक वेबसाइट यहाँ पर uniqueResult() समाधान को देखा।

Long count = ((Long) session.createQuery("select count(*) from Book").uniqueResult()); 
Integer totalBooks = count.intValue(); 
संबंधित मुद्दे