将 SQL 转换为 HQL

Transforming SQL to HQL

我的table如下:

Id   Timestamp            name_id     testobject_id 
----------------------------------------------------
2  | 2017-12-15 18:36:46 | 1        |  1
3  | 2017-12-15 18:36:46 | 2        |  1
1  | 2016-01-01 00:00:00 | 1        |  1
4  | 2017-12-15 18:36:46 | 1        |  2
5  | 2017-12-15 18:36:46 | 2        |  2

我想要每组的最后一条记录(name_id)。但我只想要 testobject_id = 1

的结果

这个 SQL 工作正常:

SELECT *
    FROM checkresult
    WHERE test_object_id = 4
    AND timestamp IN (
        SELECT MAX(timestamp)
        FROM checkresult
        WHERE test_object_id = 4    
        GROUP BY name_id
    ); 

我的 HQL 不工作。

FROM checkresult as cr 
 WHERE cr.testobject = :testobject 
  AND cr.timestamp IN ( 
   MAX(cr.timestamp) 
    FROM checkresult as result WHERE result.testobject = :testobject 
     GROUP BY result.checkName)

感谢您的每一次帮助。

期望的输出:

Id   Timestamp            name_id     testobject_id 
----------------------------------------------------
2  | 2017-12-15 18:36:46 | 1        |  1
3  | 2017-12-15 18:36:46 | 2        |  1

您在第二个 SQL 语句中写了 MAX(cr.timestamp)。 不过应该是

MAX(result.timestamp) 
FROM checkresult as result WHERE result.testobject = :testobject 
GROUP BY result.checkName

还有你的错误信息是什么?