दिलचस्प पोस्ट
अलग ऊंचाई के कॉलम के साथ बूटस्ट्रैप पंक्ति प्रोग्रामेटिक रूप से विश्वसनीय साइट्स को इंटरनेट एक्सप्लोरर में जोड़ें एनएलटीके एक कॉरपस का उपयोग करके स्पैनिश शब्द टैग करना हे (एल्गोरिगन) एल्गोरिथ्म – बाइनरी स्ट्रिंग के भीतर समान रूप से तीन स्थान प्राप्त करें स्प्रिंग सुरक्षा प्रमाणीकरण RestTemplate का उपयोग कर मैं "अनचाहे सिंटैक्स त्रुटि: अनपेक्षित टोकन ओ" प्राप्त कर रहा हूं कैसे एमवीवीएमएलईएल सरलआईओक का उपयोग करें? एक फाइल grep, लेकिन कई आसपास की रेखाएँ दिखाएं? एल्गोरिथ्म सीएसएस कोड से MSSQL सर्वर पर एसक्यूएल इंजेक्शन से बचने के लिए? क्लास टेम्प्लेट में स्थिर सदस्य आरंभीकरण अजगर का समय + टाइमडेल्टा समकक्ष दृश्य पैरामीटर सुविधा के माध्यम से बुकमार्कयोग्यता हेक्साडेसिमल को जावा में पूर्णांक कैसे एक हैशमैप में संग्रहीत विधि को कॉल करें? (जावा) बूटस्ट्रैप 3 ग्लाइफिकॉन सीडीएन

आप HQL में एक सीमा क्वेरी कैसे करते हैं?

सीतनिद्रा में होना 3 में, क्या HQL में निम्न MySQL सीमा के बराबर करने का कोई तरीका है?

select * from a_table order by a_table_column desc limit 0, 20; 

यदि संभव हो तो मैं setMaxResults का उपयोग नहीं करना चाहता यह निश्चित रूप से हाइबरनेट / एचक्यूएलएल के पुराने संस्करण में संभव था, लेकिन ऐसा लगता है कि गायब हो गए हैं।

Solutions Collecting From Web of "आप HQL में एक सीमा क्वेरी कैसे करते हैं?"

यह हाइबरनेट मंच पर कुछ साल पहले पोस्ट किया गया था जब पूछा गया कि यह हाइबरनेट 2 में क्यों काम करता है, लेकिन सीतनिद्रा में होना 3 में नहीं:

सीमा HQL में एक समर्थित खंड कभी नहीं था आप setMaxResults () का उपयोग करने के लिए हैं

तो अगर यह हाइबरनेट 2 में काम करता है, तो ऐसा लगता है कि डिजाइन के बजाय संयोग से किया गया था। मुझे लगता है कि यह है क्योंकि सीतनिद्रा में होना 2 HQL पार्सर क्वेरी के बिट्स को प्रतिस्थापित करेगा जो कि उसे HQL के रूप में पहचाना जाता है, और बाकी को इसे छोड़ दें, ताकि आप कुछ मूल एसक्यूएल में घुस कर सकें। सीतनिद्रा में होना 3, हालांकि, एक उचित एएसटी HQL पार्सर है, और यह बहुत कम क्षमा करने वाला है।

मुझे लगता है Query.setMaxResults() वास्तव में आपका एकमात्र विकल्प है।

  // SQL: SELECT * FROM table LIMIT start, maxRows; Query q = session.createQuery("FROM table"); q.setFirstResult(start); q.setMaxResults(maxRows); 

यदि आप Query ऑब्जेक्ट पर setMaxResults() का उपयोग नहीं करना चाहते हैं, तो आप हमेशा सामान्य SQL का उपयोग करने के लिए वापस लौट सकते हैं।

यदि आप setMaxResults का उपयोग नहीं करना चाहते हैं, तो आप सूची के बजाय Query.scroll का उपयोग भी कर सकते हैं, और अपनी इच्छानुसार पंक्तियों को प्राप्त कर सकते हैं। उदाहरण के लिए पेजिंग के लिए उपयोगी

String hql = "select userName from AccountInfo order by points desc 5";

यह setmaxResults(); का उपयोग किए बिना मेरे लिए काम किया setmaxResults();

खोजशब्द limit का उपयोग किए बिना बस (इस मामले में 5) अधिकतम मूल्य प्रदान करें : पी

मेरा अवलोकन यह है कि आपके पास भी HQL (हायबरनेट 3.x) में सीमा है, यह या तो पार्सिंग त्रुटि हो जाएगी या सिर्फ उपेक्षित हो जाएगी (यदि आपके पास सीमा से पहले + अभिलेख / एसी द्वारा आदेश दिया गया है, तो इसे अनदेखा कर दिया जाएगा, यदि आपके पास सीमा से पहले वर्ण नहीं है, तो यह पार्सिंग त्रुटि का कारण होगा)

यदि इस मोड में एक सीमा का प्रबंधन कर सकते हैं

 public List<ExampleModel> listExampleModel() { return listExampleModel(null, null); } public List<ExampleModel> listExampleModel(Integer first, Integer count) { Query tmp = getSession().createQuery("from ExampleModel"); if (first != null) tmp.setFirstResult(first); if (count != null) tmp.setMaxResults(count); return (List<ExampleModel>)tmp.list(); } 

यह एक सीमा या एक सूची को संभालने के लिए एक बहुत ही सरल कोड है

 Criteria criteria=curdSession.createCriteria(DTOCLASS.class).addOrder(Order.desc("feild_name")); criteria.setMaxResults(3); List<DTOCLASS> users = (List<DTOCLASS>) criteria.list(); for (DTOCLASS user : users) { System.out.println(user.getStart()); }