Est-il possible d'utiliser le COMTE, avec une JPA projection?
Je suis l'aide d'une JPA distinctes de projection pour obtenir certaines données:
select distinct o.f1, o.f2, o.f3 from SomeEntity o where ...
Cela fonctionne bien avec setFirstResult et setMaxResults à la page de données.
Cependant j'ai besoin de compter le nombre total de lignes sans chercher de tous. J'ai essayé:
select count(distinct o.f1, o.f2, o.f3) from SomeEntity o where ...
Cela ne fonctionne pas (avec EclipseLink de toute façon) et il ne semble pas à être autorisé par la JPA spec. Est-il une autre voie? Je ne veux pas à avoir à écrire une requête SQL pour ce faire.
double possible de Comment faire un compte distinct en JPA critères d'API?
OriginalL'auteur David Tinker | 2010-10-05
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
OriginalL'auteur Lars Høidahl
Si EclipseLink et votre sous-jacente DB permettre les sous-sélections essayer:
De cette façon, vous pouvez simplement mettre votre JQL à compter de son résultat total de la taille.
Cela fonctionne pour hibernate, sql des requêtes nommées. Je vais essayer sur JP-QL requêtes bientôt.
OriginalL'auteur SaSConsul
Vous dites que vous ne voulez pas écrire une requête SQL pour ce faire, mais quelle est la différence entre JPA QL et SQL? Si vous ne souhaitez pas utiliser le
getResultList().size()
méthode pour déterminer le nombre total de lignes, alors le seul moyen est d'utiliser un natif de la requête sql.ou
Il est calme une raison pourquoi JPQL existe et pourquoi il est généralement recommandé natifs SQL. À l'aide de getResultList().taille() si vous ne souhaitez récupérer le nombre d'éléments est unefective et maladroit.
OriginalL'auteur Shervin Asgari