2010-10-12 29 views
3

je veux exécuter le SQLCritères Hibernate: Projeter Count avec le groupe par la clause

suivant
select count(*) as myCount from user group by name; 

je suis venu avec les critères suivants pour la même

DetachedCriteria.ForClass(typeof(UserDTO)) 
    .setProjections(Projections.ProjectionList() 
         .Add(Projections.rowCount(),"myCount") 
         .Add(Projections.groupProperty("this.name")); 

Je reçois le résultat de retour en tant que paire du compte et du nom, Comment puis-je obtenir juste le compte de ceci.

+1

Quelle est l'utilisation d'obtenir plusieurs numéros sans référence de ce qu'ils correspondent à? –

+0

L'application sur laquelle je travaille dispose d'une architecture qui utilise des référentiels pour l'accès aux données. Il existe des référentiels prédéfinis pour récupérer des objets. Les objets ainsi récupérés doivent implémenter certaines interfaces. Sous une telle architecture je ne peux pas récupérer un objet celui retourné par ce critère. – frictionlesspulley

Répondre

0

Je ne pense pas que vous puissiez le faire avec des critères, mais c'est facile avec HQL. C'est exactement la même chaîne que votre requête SQL, mais avec les noms d'entité/propriété au lieu de ceux de table/colonne.

0

Vous pouvez utiliser count distinct s'il n'y a qu'un seul groupe par colonne.

HQL:

select count(distinct name) as myCount from user 

Critères:

DetachedCriteria.ForClass(typeof(UserDTO)) 
.setProjections(Projections.ProjectionList() 
        .Add(Projections.countDistinct("name"),"myCount"));