在Hibernate 3中,有没有办法等效于HQL中的以下MySQL限制?
select * from a_table order by a_table_column desc limit 0, 20;
如果可能的话,我不想使用setMaxResults。这肯定在较旧的Hibernate / HQL版本中是可行的,但似乎已经消失了。
几年前,当有人问到为什么它在Hibernate 2中有效但在Hibernate 3中无效时,此消息发布在Hibernate论坛上:
在HQL中,从不支持Limit 子句。你应该使用setMaxResults()。
因此,如果它在Hibernate 2中工作,那似乎是偶然的,而不是设计的。我认为这是因为Hibernate 2 HQL解析器将替换它识别为HQL的查询的位,而其余部分保持不变,因此你可以使用一些本机SQL。但是,Hibernate 3具有适当的AST HQL解析器,并且它的宽容度要低得多。
我认为Query.setMaxResults()确实是你唯一的选择。
Query.setMaxResults()