2011-04-14 14 views
9

मेरे पास कक्षा Customer और CustomerDependant इकाइयां हैं। Customer में इसके आश्रितों के साथ कई द्वि-दिशात्मक संबंध हैं। मुझे नाम और आश्रित नाम से फ़िल्टर करने वाले ग्राहकों को ढूंढना होगा।जेपीए मानदंड एपीआई: नेस्टेड संग्रह में संपत्ति का चयन कैसे करें

यह JPQL में कुछ इस तरह किया जाता है:

select c join fetch c.dependants d from Customer c where c.name like 
'foo' and d.name like 'foo' 

मैं कैसे जेपीए मानदंड प्रश्नों के साथ एक ही बात कर सकते हैं?

उत्तर

10

जेपीए विशिष्टता अनुभाग से लिया 6.5.4

CriteriaQuery<Department> q = cb.createQuery(Department.class); 
Root<Department> d = q.from(Department.class); 
d.fetch(Department_.employees, JoinType.LEFT); 
q.where(cb.equal(d.get(Department_.deptno), 1)).select(d); 

इस क्वेरी निम्नलिखित जावा हठ क्वेरी भाषा क्वेरी के बराबर है:

SELECT d 
FROM Department d LEFT JOIN FETCH d.employees 
WHERE d.deptno = 1 

यह वही है कि मैं यह कर के बिना लाने है

CriteriaQuery<Department> q = cb.createQuery(Department.class); 
Root<Department> dept = q.from(Department.class); 
Join<Department,Employee> emp = d.join(Department_.employees); 
q.where(cb.equal(emp.get(Employee_.name),"edalorzo")); 

Fetch एक प्रकार का जुड़ाव है, इसलिए मुझे लगता है कि आप इसके साथ भी प्रयोग कर सकते हैं।