如何在HQL中执行限制查询?

问题:

在Hibernate 3中,有没有办法在HQL中等同于以下MySQL限制?

select * from a_table order by a_table_column desc limit 0, 20;

如果可能,我不想使用setMaxResults。这在Hibernate / HQL的旧版本中绝对可以,但是似乎已经消失了。

回答:

 几年前Hibernate论坛上的This was posted被问及为什么这个工作在Hibernate 2中但不是在Hibernate 3中:

限制在HQL中是never支持的子句。你的意思是使用setMaxResults()。

所以如果它在Hibernate 2中工作,似乎是巧合的,而不是设计。我think这是因为Hibernate 2 HQL解析器将替换它认为是HQL的查询的位,并保留其余的,因此您可以潜入一些本机SQL。然而,Hibernate 3具有一个适当的AST HQL解析器,并且它的宽容度要少得多。
我认为Query.setMaxResults()真的是你唯一的选择。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How do you do a limit query in HQL?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 63 = 71