HQL - sélectionnez le comte de sélectionner
Je voudrais être en mesure de compter le nombre d'enregistrements retournés dans une autre requête. À l'aide de SQL, c'est facile:
select count (*)
from (
select count(first_name)
from users
group by first_name) as temp
Quelqu'un aurait-il une idée de comment puis-je le faire à l'aide de requêtes HQL?
Vous devez vous connecter pour publier un commentaire.
Je pense qu'il n'est pas possible de manière générique. HQL n' - pour autant que je sais - pas en charge les sous-requêtes dans la clause from. (Pour être sûr, essayer. Il y a parfois des fonctionnalités cachées...)
Dans ce cas, la requête serait:
Il ne semble pas possible de compter plusieurs colonnes distinctes.
Il y a un fonction pour
QueryOver
(je ne sais pas si elle existe et comment il pourrait être appelé en Java).Si vous avez désespérément besoin d'elle pour HQL, vous pourriez écrire une telle méthode et de l'envoyer à la communauté ...
J'espère que ça aidera quelqu'un. Ceci est valable HQL/requête SQL:
La sélection de l'Id de lignes groupées et de compter les lignes avec l'id dans cette liste.
UPD: Performances de cette requête est très faible.
À moins que j'ai reçu votre question mal, si le but est seulement de trouver le nombre d'enregistrements renvoyés par la requête, vous pouvez essayer le dessous de la version:
Noter que, le Utilisateurs dans la requête ci-dessus est l'Entité n'est pas le nom le nom de la Table.
Dans le cas où si vous êtes à la recherche pour la requête HQL une syntaxe similaire à votre requête SQL (c'est à dire, sous-sélection dans la clause from), il n'est pas pris en charge par Hibernate HQL comme par HHH-3356