2010-06-24 150 views
1

我有以下结构的表:休眠HQL getMaxVersion

ReportId

标题
.....

我想用HQL获取的最新版本按ID报告。以下查询会起作用吗?

from Report where reportId = :reportId and version = (select max(version) from Report where reportId = :reportId) 

是否有可能检索最大版本的行而不使用子选择?上面的子选择在Hibernate中是否合法?

回答

0

尝试此查询:

from Report where reportId = :reportId order by version desc 

与setMaxResults = 1

+0

这包括用例的99%,但如果我要检索标题的列表中的所有的报告呢?例如,带有可由系统生成的所有报告标题的下拉菜单。 – David 2010-06-24 16:31:18

+0

SELECT reportId,title,max(version)FROM report GROUP BY reportId。但是在这种情况下你必须使用投影。 – uthark 2010-06-24 16:49:42

0

您可以按版本进行排序并在查询中使用setMaxResults(将其设置为1)。至于另一个问题,像这样的子查询在hql中是合法的。