gpt4 book ai didi

java - JPA 标准 API : How to select property in nested collection

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:56:02 26 4
gpt4 key购买 nike

我有一个类 CustomerCustomerDependant 实体。 Customer 与其家属有多对多的双向关系。我需要查找按姓名和相关姓名过滤的客户。

它在 JPQL 中做了类似这样的事情:

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

我如何使用 JPA 标准查询做同样的事情?

最佳答案

摘自 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

这是我在没有fetch的情况下做的

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 是一种连接,所以我想您也可以尝试一下。

关于java - JPA 标准 API : How to select property in nested collection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5658010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com