Spring:如何从JPA中的两个表中获取数据

时间:2017-05-10 05:42:25

标签: java mysql spring spring-data-jpa jpql

在下面的代码中,我想从Order表和User表中获取数据如何修改我的查询以便我可以实现这一点? user_id是订单表中的外键

public interface OrderRepository extends JpaRepository<Order, Long> {
 @Query("Select o from Order o where o.customer.id= :customerId and o.orderStatus='DELIVERED'")
     List<Order> orderHistory(@Param("customerId") long customerId);
     }

2 个答案:

答案 0 :(得分:1)

要通过订单获取客户,请执行加入提取

JOIN FETCH 表达式不是常规JOIN,也不定义JOIN变量。它的唯一目的是指定应该从数据库中获取的相关对象,并且查询结果在同一往返中。使用此查询可提高结果Country对象的迭代效率,因为它无需单独检索关联的Capital对象。 http://www.objectdb.com/java/jpa/query/jpql/from

public interface OrderRepository extends JpaRepository<Order, Long> {
 @Query("Select o from Order o inner join fetch o.customer as customer left join fetch o.user as user where customer.id= :customerId and o.orderStatus='DELIVERED'")
     List<Order> orderHistory(@Param("customerId") long customerId);
     }

答案 1 :(得分:0)

您想将customerId和order字段放入param吗? 我认为列出params中的订单字段就足够了。 当然sql语句必须是正确的。