gpt4 book ai didi

java - 使用 Criteria 和 Metamodel API 连接多个外键上的两个表

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:38 25 4
gpt4 key购买 nike

假设我们有以下五个数据库表:员工、客户、月份、现场和付款。

给定以下 (Oracle) SQL 查询:

select * from onsite o
join client c on o.client_id = c.client_id
left join payment p on (o.client_id = p.client_id and o.employee_id = p.employee_id and o.month_cd = p.month_cd)
where p.payout_date is null and c.name = 'example';

它连接三个表。首先,内连接很简单,client_id 是 Client 表中的主键,Onsite 中的外键。假设我们有 EmployeeEntity_、ClientEntity_、MonthEntity_、OnsiteEntity_ 和 PaymentEntity_ 元模型类,它与 Criteria API 的关系如下所示:

EntityManager em = ...;
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<OnsiteEntity> cq = cb.createQuery(OnsiteEntity.class);
Root<OnsiteEntity> root = cq.from(OnsiteEntity.class);
Join<OnsiteEntity, ClientEntity> client = root.join(OnsiteEntity_.client);

Onsite 和 Payment 表都包含 Employee、Client 和 Month 表主键的三个外键。左连接连接这三个外键上的 Onsite 和 Payment 表。

问题是如何使用元模型类通过 JPA Criteria API 表达两个未连接表的左连接

最佳答案

您可以使用JoinType.LEFT作为join参数(https://en.wikibooks.org/wiki/Java_Persistence/Criteria#JoinType)

root.join(OnsiteEntity_.client, JoinType.LEFT);

关于java - 使用 Criteria 和 Metamodel API 连接多个外键上的两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28120282/

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