Maison > Java > javaDidacticiel > Comment remplacer la clause LIMIT de MySQL en JPQL ou HQL ?

Comment remplacer la clause LIMIT de MySQL en JPQL ou HQL ?

Susan Sarandon
Libérer: 2024-12-15 04:16:09
original
828 Les gens l'ont consulté

How to Replace MySQL's LIMIT Clause in JPQL or HQL?

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);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal