JPA/JPQL COUNT question

J'ai la suite de la requête JPQL -

SELECT f.md5 
FROM File f, Collection leafCollections, Collection instCollections 
WHERE (f.status = com.foo.bar.FileStatus.Happy OR f.status = com.foo.bar.FileStatus.Sad) 
      AND f.collectionId = leafCollections.collectionId 
      AND leafCollections.instanceCollectionId = instCollections.collectionId 
GROUP BY f.md5, instCollections.collectionId 

Essentiellement, il renvoie le md5s pour les fichiers qui sont organisés dans une hiérarchie (arbre) de telle sorte que si le même MD5 apparaît dans plus d'une feuille dans une branche particulière de la hiérarchie, il sera seulement indiqué qu'une fois (merci pour le GROUP BY).

Cela fonctionne bien. Disons que je reçois 100 lignes de retour. Chaque ligne contenant un md5 comme une chaîne de caractères.

Maintenant je veux obtenir le COMPTER du nombre de lignes retournées. Je pensais que je pouvais tout simplement faire:

SELECT COUNT(f.md5) 
FROM File f, Collection leafCollections, Collection instCollections 
WHERE (f.status = com.foo.bar.FileStatus.Happy OR f.status = com.foo.bar.FileStatus.Sad) 
      AND f.collectionId = leafCollections.collectionId 
      AND leafCollections.instanceCollectionId = instCollections.collectionId 
GROUP BY f.md5, instCollections.collectionId 

Toutefois cela renvoie 100 lignes, chacune contenant un long représentant le nombre de fois que le md5 est apparu dans une branche. Ce que je voulais, c'était simplement pour obtenir 1 rangée de retour avec une longue valeur de 100 le nombre total de lignes de la requête d'origine retourné. J'ai l'impression de rater quelque chose d'évident.

Suggestions?

Hmmm.. Avez-vous fait la requête.getSingleResult au lieu de getResultList (et cast le résultat à nombre).?
Une suggestion: Veuillez insérer votre code ( ou d'une requête dans ce cas) à l'intérieur d'un bloc de code. (Mettre en évidence le code et appuyez sur ctrl+k ou ^k pour les utilisateurs de mac )

OriginalL'auteur NBW | 2011-01-22