JPA:如何高效连接表?

问题描述 投票:0回答:1

在 Java 中,使用 JPA 和 EclipseLink。 假设我有 3 个表:Supplier、Order 和 Customer

我想获得所有有该供应商订单的客户 假设供应商和客户没有直接联系。 它们只能通过订单加入来链接:

一个订单可以有一个客户 一个顾客可以有多个订单

订单也链接到供应商 一个供应商可以有多个订单 一个订单只能有1个供应商

一种方法:

在 JPA 中,一旦设置了模型/实体,您就可以执行 EntityManager.find(Supplier.class, 1)

这将返回供应商及其订单,从那里我们可以获取订单并获取链接到该供应商的所有客户。

但是这种方式会获取所有数据,而我们只想要客户,不需要其他数据,这会给数据库和客户端带宽带来压力。

什么是更好的 JPA、JPQL 方法来仅获取链接到供应商的客户数据? 我知道我可以进行原始查询,但这违背了 JPA 的目的。

提前致谢, 亲切的问候,

java hibernate jpa eclipselink jpql
1个回答
0
投票

假设您已在

@ManyToOne
中定义了
Order
Customer
Supplier
的关系,则可以进行如下 JPQL 查询:

select distinct o.customer from Order o where o.supplier.id = :supplierId
© www.soinside.com 2019 - 2024. All rights reserved.