在 Hibernate 3 中,有没有办法在 HQL 中执行相当于以下 MySQL 限制的操作?
select * from a_table order by a_table_column desc limit 0, 20;
如果可能,我不想使用 setMaxResults。这在旧版本的 Hibernate/HQL 中绝对是可能的,但它似乎已经消失了。
原文由 stevedbrown 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Hibernate 3 中,有没有办法在 HQL 中执行相当于以下 MySQL 限制的操作?
select * from a_table order by a_table_column desc limit 0, 20;
如果可能,我不想使用 setMaxResults。这在旧版本的 Hibernate/HQL 中绝对是可能的,但它似乎已经消失了。
原文由 stevedbrown 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
这是几年前在 Hibernate 论坛上发布 的,当被问及为什么这在 Hibernate 2 中有效但在 Hibernate 3 中无效时:
因此,如果它在 Hibernate 2 中有效,那似乎是巧合,而不是设计。我 认为 这是因为 Hibernate 2 HQL 解析器会替换它识别为 HQL 的查询位,并保持其余部分不变,因此您可以潜入一些本机 SQL。然而,Hibernate 3 有一个合适的 AST HQL 解析器,而且它的宽容度要低得多。
我认为
Query.setMaxResults()
真的是你唯一的选择。