我使用eclipse链接作为我的JPA。我有以下使用UNION和ORDER BY的SQL查询。
select * from (SELECT * FROM RQST p WHERE RQST_ID ='14962709'
UNION
SELECT * FROM RQST q WHERE PARNT_RQST_ID IN (SELECT RQST_ID FROM RQST WHERE
PARNT_RQST_ID ='14962709'))ORDER BY RQST_DT_TM;
现在工作正常我想将其转换为JPQL。我在我的代码中写了以下内容
select req from
( select req from Rqst req WHERE ( req.parntRqstId =:PARENT_REQUEST)
UNION select reqs from Rqst reqs where reqs.parntRqstId in
( select req.rqstId from Rqst req WHERE (req.parntRqstId =:PARENT_REQUEST)
)
)
ORDER BY req.rqstDtTm
但是这就是投掷
java.lang.IllegalArgumentException:The right parenthesis is missing from the sub-expression.
An identification variable must be provided for a range variable declaration.
The query contains a malformed ending.
任何人都可以告诉我哪里出错了吗?
答案 0 :(得分:1)
您可以使用OR条件重新格式化JPA查询以达到相同的效果:
(查询未经过测试,请考虑更改)
select req from Rqst req WHERE ( req.parntRqstId =:PARENT_REQUEST)
OR reqs.parntRqstId in ( select req.rqstId from Rqst req WHERE (req.parntRqstId =:PARENT_REQUEST) )) ORDER BY req.rqstDtTm
或者使用原生查询。
PS:在JPA中不支持UNION,但在EclipseLink中有。