द्वारा क्वेरी के परिणाम को संक्षिप्त करना मैं किसी अन्य क्वेरी के परिणामस्वरूप हाइबरनेट मानदंड क्वेरी के परिणाम सेट को संकीर्ण करने की कोशिश कर रहा हूं। मुझे पता है कि जेपीक्यूएल के साथ इस समस्या को कैसे हल करें:सबक्वायरी
FROM DocPackage p WHERE
EXISTS (SELECT g
FROM ObjectGroup g JOIN g.items i, Person per
WHERE g=p.applicantGroup
AND i.objectClass = 'org.cp.model.common.Person'
AND i.objectId=per.id
AND lower(concat(per.firstName,' ',per.lastName)) like :applicant
)
लेकिन मैं कल्पना नहीं कर सकता कि मानदंड के साथ ऐसी क्वेरी कैसे करें। मानदंड के साथ इस चयन को लागू करने के लिए कोई विचार? हाइबरनेट 3.3 का उपयोग किया जाता है।
युपीडी: इस समस्या को मैं निम्नलिखित मानदंड क्वेरी कर दिया है हल करने के लिए कोशिश कर रहा है:
Criteria resultCriteriaQuery = this.hibernateSession.createCriteria(DocPackage.class, "pack");
DetachedCriteria personSubquery = DetachedCriteria.forClass(Person.class, "pers").
add(Restrictions.like("pers.loFstLstName", "%" + searchObject.getApplicant().toLowerCase() + "%")).
add(Restrictions.eqProperty("itm.objectId", "pers.id"));
DetachedCriteria applicantsSubquery = DetachedCriteria.forClass(ObjectGroup.class, "objGrp").
add(Restrictions.eqProperty("pack.applcantGroup", "objGrp")).
createAlias("objGrp.items", "itm").
add(Restrictions.eq("itm.objectClass", "org.cp.model.common.Person")).
add(Subqueries.exists(personSubquery));
resultCriteriaQuery.add(Subqueries.exists(applicantsSubquery));
लेकिन यह काम नहीं करता। मेरे पास resultCriteriaQuery.list()
पर NullPointerException
है। इस सवाल के साथ क्या गलत है? कोई विचार?