2016-11-21 68 views
1
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?

+0

Hive查询语言或Hibernate查询语言? –

+0

hibernate查询语言 – Chinnu

回答

1

HQL-documentation说子查询只允许在SELECTWHERE。所以,我的第一个步骤是将子查询移到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 
) 

根据您的休眠 - 你可能需要更改连接的版本。我不确定查询是否有效,但您可以尝试一下方法。

+0

hql是否支持'on'条件左连接? – Chinnu

+0

“左加入索引文件列表cf cf ON cf.visitid = vd.id”是否有可能与hql中的这个'on'条件连接表? – Chinnu

+0

我有以下错误。 – Chinnu