一对多关联的 JPA 连接查询
JPA join query on one-to-many association
我与 Customer
和 Order
实体有 one-to-many
关系。这是一种组合关系。我想编写一个查询来查明是否存在与给定 orderId
和 customerId
匹配的 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);
我与 Customer
和 Order
实体有 one-to-many
关系。这是一种组合关系。我想编写一个查询来查明是否存在与给定 orderId
和 customerId
匹配的 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);