Otá*_*cia 10 java criteria-api jpa-2.0
我有一个班级Customer和CustomerDependant实体.Customer与其家属有多对多的双向关系.我需要找到按名称和从属名称过滤的客户.
它在JPQL中做了类似的事情:
select c join fetch c.dependants d from Customer c where c.name like
'foo' and d.name like 'foo'
Run Code Online (Sandbox Code Playgroud)
我如何使用JPA Criteria Queries做同样的事情?
Edw*_*rzo 11
取自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);
Run Code Online (Sandbox Code Playgroud)
此查询等效于以下Java持久性查询语言查询:
SELECT d
FROM Department d LEFT JOIN FETCH d.employees
WHERE d.deptno = 1
Run Code Online (Sandbox Code Playgroud)
这是我没有抓取的做法
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"));
Run Code Online (Sandbox Code Playgroud)
Fetch是一种连接,所以我猜你也可以尝试一下.