jpa查询集合中的实体在列表中的位置

时间:2011-01-19 11:54:21

标签: jpa openjpa

可能没有在标题中最好地描述,但我有3个实体

订单 - > OneToMany - > OrderProduct

OrderProduct< - ManyToOne - >产品

产品< - 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)

有没有办法以单一选择的JPA方式执行此操作,因为我有我的集合和实体急切加载连接,以便在一次传递中填充对象图

1 个答案:

答案 0 :(得分: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进行两次联接 - 一次用于过滤,另一次用于急切提取。