在 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 许可协议
8 回答6.6k 阅读
4 回答717 阅读✓ 已解决
2 回答3.4k 阅读
3 回答1.9k 阅读✓ 已解决
1 回答2.2k 阅读✓ 已解决
1 回答2.1k 阅读✓ 已解决
1 回答974 阅读✓ 已解决
这是几年前在 Hibernate 论坛上发布 的,当被问及为什么这在 Hibernate 2 中有效但在 Hibernate 3 中无效时:
因此,如果它在 Hibernate 2 中有效,那似乎是巧合,而不是设计。我 认为 这是因为 Hibernate 2 HQL 解析器会替换它识别为 HQL 的查询位,并保持其余部分不变,因此您可以潜入一些本机 SQL。然而,Hibernate 3 有一个合适的 AST HQL 解析器,而且它的宽容度要低得多。
我认为
Query.setMaxResults()
真的是你唯一的选择。