几年前,当有人问到为什么它在Hibernate 2中有效但在Hibernate 3中无效时,此消息发布在Hibernate论坛上:
在HQL中, 从不 支持Limit 子句。您应该使用setMaxResults()。
因此,如果它在Hibernate 2中工作,那似乎是偶然的,而不是设计的。我 认为 这是因为Hibernate 2 HQL解析器将替换它识别为HQL的查询的位,而其余部分保持不变,因此您可以使用一些本机sql。但是,Hibernate 3具有适当的AST HQL解析器,并且它的宽容度要低得多。
我认为Query.setMaxResults()
确实是您唯一的选择。