Alternative à la clause MySQL LIMIT en JPQL ou HQL
Dans Hibernate 3, l'équivalent de la clause MySQL LIMIT en HQL n'est pas directement supporté . Même si cela était possible dans les versions antérieures d'Hibernate, ce n'est plus une fonctionnalité.
Note historique :
Dans Hibernate 2, l'analyseur HQL n'imposait pas strictement le respect à la syntaxe HQL standard. Cela a permis d'inclure des fragments non reconnus, tels que la clause LIMIT, dans une requête HQL. Cependant, avec l'introduction d'un analyseur AST HQL dans Hibernate 3, de telles constructions non standard ne sont plus tolérées.
Solution :
L'approche recommandée pour limiter les requêtes résultats dans Hibernate 3 et versions ultérieures consiste à utiliser la méthode setMaxResults() de l'interface Query. Cette méthode vous permet de spécifier le nombre maximum de résultats à renvoyer par la requête.
Pour émuler le comportement de la clause MySQL LIMIT, vous pouvez utiliser setMaxResults() en conjonction avec la méthode setFirstResult(). Par exemple, pour renvoyer les 20 premiers résultats d'une requête, vous utiliserez le code suivant :
Query query = session.createQuery("from ATable order by aTableColumn desc"); query.setMaxResults(20); query.setFirstResult(0);
Bien que setMaxResults() ne soit pas aussi concis que la clause LIMIT, il fournit un mécanisme cohérent et pris en charge. pour limiter les résultats des requêtes dans JPQL et HQL.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!