可能没有在标题中最好地描述,但我有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方式执行此操作,因为我有我的集合和实体急切加载连接,以便在一次传递中填充对象图
答案 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
进行两次联接 - 一次用于过滤,另一次用于急切提取。