一对多关联的 JPA 连接查询

JPA join query on one-to-many association

我与 CustomerOrder 实体有 one-to-many 关系。这是一种组合关系。我想编写一个查询来查明是否存在与给定 orderIdcustomerId 匹配的 Order。这个方法应该在CustomerRepository

    @Query("select c from Customer c inner join c.orders o where c.id= ?1 and c.orders.")
    Optional<Customer> findCustomerByOrderId(long orderId, long customerId);

我很想知道 orderid 是否属于客户。从性能的角度来看,查询应该是什么,方法 return 应该是计数还是布尔值。

如果您有一个 Order 实体,其 ID 属性 和 customerId 属性,您可以使用 spring JPA magic 并向您的 OrderRepository 添加一个方法(如果您有的话) :

boolean existsByIdAndCustomerId(long orderId, long customerId)

性能将比获取客户实体更好,因为它需要从数据库到您的应用程序的数据传输更少。

如果这不能回答您的问题,您还可以分享更详细的代码。

您的@Query 可以更新如下以获得客户

@Query("select c from Customer c inner join c.orders o where c.id = :customerId and o.id = :orderId")
Optional<Customer> findCustomerByOrderId(long orderId, long customerId);

或者如果你想return计数

@Query("select count(c) from Customer c inner join c.orders o where c.id = :customerId and o.id = :orderId")
int countCustomerByOrderId(long orderId, long customerId);