在HQL中不支持Postgres中的LIMIT?

hko*_*o19 4 grails hibernate hql

我在Grails中使用以下代码执行HQL以获取前30个Item对象时出错:

 def items = Item.executeQuery('SELECT i FROM Item as i LIMIT 30 OFFSET 0')
Run Code Online (Sandbox Code Playgroud)

我的后端数据库是Postgres.但是,我得到了:

org.hibernate.hql.ast.QuerySyntaxException: unexpected token: LIMIT near line 1, column ...
Run Code Online (Sandbox Code Playgroud)

显然,错误告诉HQL不支持LIMIT.我如何使其工作?换句话说,如何让HQL执行Postgres支持的本机SQL?

Aar*_*ers 6

你可以做它的使用清单Grails的/格姆方式

def items = Item.list(offset:0, max:30)
Run Code Online (Sandbox Code Playgroud)

由于您使用的是HQL,我根据下面的评论编辑了我的答案; 任何一种方法都可行

def items = Item.executeQuery('SELECT i FROM Item as i', [max: 30, offset: 0]) 
Run Code Online (Sandbox Code Playgroud)