2011-01-19 42 views
2

可能不會在標題最好的描述,但我有3個實體JPA查詢,其中一個集合的實體是在一個列表

訂單 - 「一對多 - > OrderProduct

OrderProduct < - 多對一 - >產品

產品< - 一對多 - > OrderProduct,

我的工作本地查詢s是

SELECT t0.* 
FROM isc_orders t0 
INNER JOIN isc_customers t1 ON t0.ordcustid = t1.customerid 
INNER JOIN isc_order_products t2 ON t0.orderid = t2.orderorderid 
INNER JOIN isc_products t3 ON t2.ordprodid = t3.productid 
where t3.productid in (359, 344, 345, 346, 347, 348) 

有什麼辦法,因爲我有我的收藏,和實體預先加載與加盟,使對象圖填充在一個通做到這一點的JPA的方式在一個單一的選擇

回答

1

事情是這樣的: - 一個用於過濾,另一個用於預先抓取

SELECT DISTINCT o 
FROM Order o JOIN o.orderProducts op1 
JOIN FETCH o.orderProducts op2 JOIN FETCH op2.product 
WHERE op1.product.productid IN ? 

請注意,您需要兩個與OrderProduct小號加入。

相關問題