हैवींग क्लॉटरिया एपीआई का उपयोग करके एक विशेष मूल्य के सारांश को पकड़ने के लिए एक प्रश्न लिखा है, अब मुझे परिणामों को पंक्तियों तक सीमित करने में सक्षम होना चाहिए, एक विशेष मूल्यहाइबरनेट मानदंड एपीआई -
आम तौर पर मैं ऐसा करने के लिए अपने एसक्यूएल में एक हैविंग क्लॉज का उपयोग करता हूं, लेकिन इस समय मानदंड एपीआई इसका समर्थन नहीं कर रहा है।
SELECT user_pk, sum(amount) as amountSum
FROM transaction
GROUP BY user_pk
HAVING amountSum >=50;
एक काम के आसपास है कि मैं के बारे में सोचा में एक सबक्वेरी का उपयोग FROM खंड है कि इस योग मूल्य पकड़ लेता है और एक बाहरी क्वेरी का उपयोग करने के लिए है:
कच्चे एसक्यूएल इस में मैं यह क्या करने की जरूरत है एक WHERE खंड का उपयोग कर इसे प्रतिबंधित करने के लिए।
तो, कच्चे एसक्यूएल में यह कुछ ऐसी दिखाई देगी:
SELECT user_pk, amountSum
FROM (SELECT user_pk, sum(amount) as amountSum
FROM transaction
GROUP BY user_pk)
WHERE amountSum > 50;
किसी को कैसे मैं इस का उपयोग कर मानदंड एपीआई लिख सकता है, या किसी अन्य सुझाव/काम arounds मैं के रूप में सही दिशा में मुझे बात कर सकते हैं हैविंग मुद्दे को हल करने के लिए उपयोग कर सकते हैं?
यह वह जगह है मैं ऊपर के उदाहरण
DetachedCriteria criteria = DetachedCriteria.forClass(Transaction.class,"transaction");
criteria.setProjection(criteria.setProjection(Projections.projectionList().add(
Projections.groupProperty("user.userPK").as("user_pk")).add(
Projections.sum("transaction.amount").as("amountSum")));
धन्यवाद के लिए है मानदंड एपीआई कोड!
यह 7 साल पहले था और अभी भी हाइबरनेट के अंदर पैच नहीं किया गया है, मुझे संस्करण 4.3.6 या नए के लिए पैच लागू करने की आवश्यकता है, लेकिन कोड इतना बदल गया है कि मुझे यह स्पष्ट नहीं है कि यह कैसे किया जाए। किसी को भी यह पैच अद्यतन किया गया है? –