我多次遇到问题,我的JPA查询中的左连接会生成一个SQL查询,其中表在FROM子句中的顺序不正确且无法执行。
一些伪实体的简单示例:
CAR {
int id,
string model
}
OWNER {
Car car,
string owner_name
}
BORROWER {
Car car,
string borrower_name
}
JPA查询:
SELECT O, B
FROM OWNER O
LEFT JOIN BORROWER B ON ( B.CAR = O.CAR )
生成的SQL查询如下所示:
SELECT *
FROM owner_table
LEFT JOIN borrower_table ON ( borrower_table.car_id = car_table.id )
, car_table
WHERE car_table.id = owner_table.car_id
这不会运行,因为car_table是在连接中引用后声明的。我有什么可以做的吗?
在Oracle DB上运行EclipseLink。
答案 0 :(得分:0)
我猜您可以使用旧样式连接构建jpa查询:
SELECT O, B
FROM OWNER O, BORROWER B, CAR C
WHERE (O.car_id = B.car_id and B.car_id = C.car_id)
or (O.car_id is null)
or (O.car_id != B.car_id)