簡體   English   中英

JPA Criteria API:如何在嵌套集合中選擇屬性

[英]JPA Criteria API: How to select property in nested collection

我有一個CustomerCustomerDependant類實體。 Customer與其家屬有多對多的雙向關系。 我需要找到按名稱和從屬名稱過濾的客戶。

它在JPQL中做了類似的事情:

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

我如何使用JPA Criteria Queries做同樣的事情?

取自JPA規范第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);

此查詢等效於以下Java持久性查詢語言查詢:

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是一種連接,所以我猜你也可以嘗試一下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM