当前位置: 首页 > 面试题库 >

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

孙帅
2023-03-14
问题内容

在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()确实是你唯一的选择。



 类似资料:
  • 问题内容: 在Hibernate 3中,有没有办法等效于以下HQL中的MySQL限制? 如果可能,我不想使用setMaxResults。这肯定在较旧的Hibernate / HQL版本中是可行的,但似乎已经消失了。 问题答案: 几年前,当有人问到为什么它在Hibernate 2中有效但在Hibernate 3中无效时,此消息发布在Hibernate论坛上: 在HQL中, 从不 支持Limit 子句

  • 问题内容: 我正在使用Hibernate 3.1.1,尤其是我正在使用HQL查询。 根据文档,Hibernate的查询是多态的: 像:这样的查询不仅返回的实例,还返回像的子类的实例。 如何查询Cat的实例,但不查询其任何子类的实例? 我希望能够做到而不必明确提及每个子类。 我知道以下选项,但并不令人满意: 查询后手动过滤实例,或者: 在鉴别符列上手动添加WHERE子句。 Hibernate允许用户

  • 本文向大家介绍Zookeepr 如何进行权限控制?相关面试题,主要包含被问及Zookeepr 如何进行权限控制?时的应答技巧和注意事项,需要的朋友参考一下 ZooKeeper 采用 ACL(AccessControlLists)策略来进行权限控制,类似于 UNIX 文件系统的权限控制。 对于 znode 操作的权限,ZooKeeper 提供了以下 5 种: CREATE : 能创建子节点 READ

  • 问题内容: 如何在jDBI中执行类似的操作? 表: foo(id int,name varchar) 与myBatis中的@SelectProvider相似。 问题答案: 这应该工作: 不要忘记用以下方法注释包含此方法的类: 注解(因为JDBI底层使用Apache StringTemplate进行此类替换)。还要注意,使用此注释,您不能在SQL查询中使用’<’字符而不进行转义(因为它是String