在 Java 中,使用 JPA 和 EclipseLink。 假设我有 3 个表:Supplier、Order 和 Customer
我想获得所有有该供应商订单的客户 假设供应商和客户没有直接联系。 它们只能通过订单加入来链接:
一个订单可以有一个客户 一个顾客可以有多个订单
订单也链接到供应商 一个供应商可以有多个订单 一个订单只能有1个供应商
在 JPA 中,一旦设置了模型/实体,您就可以执行 EntityManager.find(Supplier.class, 1)
这将返回供应商及其订单,从那里我们可以获取订单并获取链接到该供应商的所有客户。
但是这种方式会获取所有数据,而我们只想要客户,不需要其他数据,这会给数据库和客户端带宽带来压力。
什么是更好的 JPA、JPQL 方法来仅获取链接到供应商的客户数据? 我知道我可以进行原始查询,但这违背了 JPA 的目的。
提前致谢, 亲切的问候,
假设您已在
@ManyToOne
中定义了 Order
与 Customer
和 Supplier
的关系,则可以进行如下 JPQL 查询:
select distinct o.customer from Order o where o.supplier.id = :supplierId