8
votes

Comment commander par compte () en JPA

J'utilise cette requête JPA:

SELECT DISTINCT e.label, COUNT(e.label) FROM Entity e 
WHERE TYPE(e.cat) = :category 
GROUP BY e.label 
ORDER BY COUNT(e.label) DESC


2 commentaires

Êtes-vous sûr que vous pouvez passer le paramètre : catégorie correctement en tant que paramètre? Essayez de mettre le type de classe souhaité directement dans le SQL.


En passant à : catégorie fonctionne bien.


3 Réponses :


13
votes

Vous devrez peut-être inclure le compteur (e.label) code> dans votre clause SELECT:

from Named n, Named m where n.name = m.name // HQL only


1 commentaires

Cela a fonctionné pour la première requête, mais pas pour une autre requête, qui a un où la clause .



-1
votes

Impossible de voir comment la commande pourrait être incorrecte. Quel est le résultat incorrect?

Quel est le SQL qui est généré, si vous essayez le même SQL directement sur la base de données, donne-t-il le même ordre incorrect?

Quelle base de données utilisez-vous?

Vous pouvez toujours trier en Java à la place à l'aide de sorte ().


1 commentaires

Ne seriez-vous pas inefficace dans Java, car vous devriez avoir toutes les données de la base de données dans la mémoire Java?



2
votes

Pour une raison quelconque, le style suivant nommé requête n'a pas fonctionné pour moi:

SELECT DISTINCT e.label, COUNT(e.label) 
FROM Entity e 
GROUP BY e.label 
ORDER BY 2 DESC


0 commentaires