मैं ग्लासफ़िश और जेएसएफ का उपयोग कर अपना पहला जावा ईई वेब एप्लिकेशन बना रहा हूं। मैं मानदंड क्वेरी के लिए बिल्कुल नया हूं और मेरे पास एक क्वेरी है जो मुझे करने की ज़रूरत है लेकिन javaee6 ट्यूटोरियल उदाहरणों पर थोड़ा पतला लगता है। वैसे भी, मुझे क्वेरी बनाने में कठिनाई हो रही है।जेपीए मानदंड क्वेरी बनाने में मदद की ज़रूरत है
लक्ष्य: मैं कंपनी को संग्रहीत अधिकांश दस्तावेज़ों के साथ खींचना चाहता हूं। कंपनियां दस्तावेज़ों के साथ एक बहुत ही रिश्तेदार हैं। दस्तावेज़ों में कई तालिकाओं के साथ बहुत से संबंध हैं, "usertype" कॉलम उन्हें अलग करता है।
MySQL क्वेरी:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Documents> cqry = cb.createQuery(Documents.class);
//Intersting Stuff
Root<Documents> root = cqry.from(Documents.class);
Expression userid = root.get("userID");
Expression usertype = root.get("userType");
Expression count = cb.count(userid);
cqry.multiselect(userid, count);
Predicate userType = cb.equal(usertype, "COMPANY");
cqry.where(userType);
cqry.groupBy(userid);
cqry.orderBy(cb.desc(count));
//more boilerplate
Query qry = em.createQuery(cqry);
List<Documents> results = qry.getResultList();
त्रुटि मैं मिलता है:
SELECT USERID, COUNT(USERID) AS CNT
FROM DOCUMENTS
WHERE USERTYPE="COMPANY"
GROUP BY USERID
ORDER BY CNT DESC
धन्यवाद
--update-- प्रयोक्ताओं की राय के आधार पर, यहाँ क्या मैं अब तक किया है :
Exception Description: Partial object queries are not allowed to maintain the cache or be edited. You must use dontMaintainCache().
विशिष्ट त्रुटि, मेरे लिए कुछ भी नहीं है!
एपीआई को अपमानित किए बिना गिनती का चयन करने के लिए CriteriaQuery से CriteriaQuery से क्वेरी को डी-टाइप करने का प्रयास करें। यदि आप टेबल/इकाइयों के बारे में अधिक जानकारी पोस्ट करते हैं तो मैं कुछ अन्य तरीकों का प्रयास कर सकता हूं –
perissf