Cela a été posté sur le forum Hibernate il y a quelques années, lorsqu'on lui a demandé pourquoi cela fonctionnait dans Hibernate 2 mais pas dans Hibernate 3 :
La limite était jamais une clause supportée dans HQL. Vous êtes censé utiliser setMaxResults().
Donc, si cela a fonctionné dans Hibernate 2, il semble que ce soit par coïncidence, plutôt qu'à dessein. I pensez à En effet, l'analyseur HQL d'Hibernate 2 remplaçait les parties de la requête qu'il reconnaissait comme HQL et laissait le reste tel quel, ce qui permettait d'introduire en douce du SQL natif. Hibernate 3, cependant, dispose d'un véritable analyseur AST HQL, et il est beaucoup moins indulgent.
Je pense Query.setMaxResults()
est vraiment votre seule option.
2 votes
J'utilise
Hibernate-5.0.12
. N'est-il pas encore disponible ? Il serait vraiment lourd d'obtenir un million d'enregistrements et d'appliquer ensuite le filtre dessussetMaxResults
par-dessus, comme l'a remarqué @Rachel dans la réponse de @skaffman.