LIMIT в Postgres не поддерживается в HQL? - PullRequest
4 голосов
/ 04 ноября 2010

У меня ошибка при использовании следующего кода в Grails, выполняющего HQL, чтобы получить первые 30 объектов Item:

 def items = Item.executeQuery('SELECT i FROM Item as i LIMIT 30 OFFSET 0')

моя база данных - Postgres.Однако я получил:

org.hibernate.hql.ast.QuerySyntaxException: unexpected token: LIMIT near line 1, column ...

Очевидно, что ошибка говорит о том, что LIMIT не поддерживается HQL.Как мне заставить это работать?Другими словами, как мне заставить HQL выполнять собственный SQL, который хорошо поддерживается Postgres?

Ответы [ 2 ]

6 голосов
/ 04 ноября 2010

вы можете сделать это Grails / GORM используя список также

def items = Item.list(offset:0, max:30)

Поскольку вы используете HQL, я отредактировал свой ответ на основе комментария ниже; любой подход будет работать

def items = Item.executeQuery('SELECT i FROM Item as i', [max: 30, offset: 0]) 
3 голосов
/ 04 ноября 2010
query.setMaxResults(..)

Посмотрите на Hibernate API

...