2017-05-10 58 views
0

在以下代碼中,我想從Order表和User表中獲取數據如何修改我的查詢以便我可以實現此目的? user_id是爲了表Spring:如何從JPA中的兩個表中獲取數據

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); 
    } 
+1

[相關問題已經在這裏回答,請檢查](http://stackoverflow.com/questions/24638465/selecting-from-multiple-tables-in-spring-data) – Rizwan

+0

我們如何知道這2個CLASSES? JPA(和JPQL)使用CLASSES not TABLES。 –

+2

[從Spring數據中的多個表中選擇]的可能的重複(http://stackoverflow.com/questions/24638465/selecting-from-multiple-tables-in-spring-data) –

回答

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); 
    } 
+0

爲什麼inner和left join都是? – SFAH

+0

加載有內部加入訂單的客戶。不確定您的模式用戶對訂單是否必需,因此使用了左連接。如果您的訂單表總是有user_id,請將左連接更改爲內連接。 – Sudhakar

+0

我使用投影,它的工作原理 – SFAH

0

你想要把客戶ID和訂單字段到PARAM? 我認爲在params中列出順序字段就足夠了。 當然sql語句一定是對的。

相關問題