2010-11-04 8 views
4

J'ai erreur en utilisant le code suivant dans Grails exécution HQL pour obtenir les 30 premiers objets Item:LIMIT dans Postgres non pris en charge dans HQL?

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

ma base de données back-end est Postgres. Cependant, j'ai:

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

Évidemment, l'erreur indique que LIMIT n'est pas supporté par HQL. Comment puis-je le faire fonctionner? En d'autres termes, comment faire en sorte que HQL exécute un SQL natif bien supporté par Postgres?

Répondre

6

vous pouvez le faire le Grails/GORM way using list aussi

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

Puisque vous utilisez HQL j'ai modifié ma réponse en fonction de commentaire ci-dessous; soit l'approche fonctionnerait

def items = Item.executeQuery('SELECT i FROM Item as i', [max: 30, offset: 0]) 
+0

utiliser [max: 30, offset: 0] carte en tant que paramètre que nous parle de méthode executeQuery. Item.executeQuery ('SELECT i FROM Item comme i', [max: 30, offset: 0]) – Oleksandr

Questions connexes