SELECT *
FROM visitdetails vd
LEFT JOIN
(SELECT MAX(id) AS id, VisitID
FROM claimfilelist GROUP BY VisitID) cf ON cf.visitid = vd.Id
LEFT JOIN claimfilelist cf1 ON cf1.id = cf.id
我有这个SQL查询。我如何将其转换为HQL?如何将具有派生表的SQL查询转换为HQL?
SELECT *
FROM visitdetails vd
LEFT JOIN
(SELECT MAX(id) AS id, VisitID
FROM claimfilelist GROUP BY VisitID) cf ON cf.visitid = vd.Id
LEFT JOIN claimfilelist cf1 ON cf1.id = cf.id
我有这个SQL查询。我如何将其转换为HQL?如何将具有派生表的SQL查询转换为HQL?
HQL-documentation说子查询只允许在SELECT
和WHERE
。所以,我的第一个步骤是将子查询移到WHERE
-clause:
SELECT *
FROM visitdetails vd
LEFT JOIN claimfilelist cf ON cf.visitid = vd.id
WHERE cf.id IS NULL OR cf.id = (
SELECT max(cfInner.id)
FROM claimfilelist cfInner
WHERE cfInner.visitId = vd.id
)
根据您的休眠 - 你可能需要更改连接的版本。我不确定查询是否有效,但您可以尝试一下方法。
Hive查询语言或Hibernate查询语言? –
hibernate查询语言 – Chinnu