2

おそらくタイトルではうまく説明されていませんが、私には3つのエンティティがあります

注文 -> OneToMany -> OrderProduct

OrderProduct <- ManyToOne -> 製品

Product <- OneToMany -> OrderProduct ,

動作する私のネイティブクエリは

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)

オブジェクトグラフが1回のパスで入力されるように、コレクションとエンティティを結合で熱心にロードしているため、単一の選択でJPAの方法でこれを行う方法はありますか

4

1 に答える 1

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 ?

sには 2 つの結合が必要であることに注意してくださいOrderProduct。1 つはフィルタリング用、もう 1 つは熱心なフェッチ用です。

于 2011-01-19T14:20:19.780 に答える