2016-03-26 8 views
0

Die nächste Code Ergebnisse mit allen Zeilen, in denen ispassed=true:Criteria API und einzigartige Ergebnisse

Criteria crit = hSession.createCriteria(ResultTable.class); 
crit.add(Restrictions.eq("ispassed", true)); 
crit.setProjection(Projections.rowCount()); 
total = (long) crit.uniqueResult(); 

Aber ‚Result‘ Tabelle enthält auch user_id Spalte und kann es Zeilen wie:

-ispassed    -user_id 
true     1 
true     1 
true     2 
true     3 
true     4 

Wie kann ich nur Zeilen erhalten, in denen user_id eindeutig ist? So dass das Ergebnis 4 sein muss.

Antwort

1

Ich glaube, Sie die Anzahl der Zeilen, deren isPassed Status wahr und wollen betrachten nur ein solcher Datensatz pro Benutzer erhalten wollte. Wenn ja, können Sie versuchen:

Criteria crit = hSession.createCriteria(ResultTable.class); 
crit.add(Restrictions.eq("ispassed", true)); 
crit.setProjection(Projections.groupProperty("userId")); 
total = crit.list().size(); 

HINWEIS:user_id Unter der Annahme in Ihrer ResultTable Entität als userId Feld abgebildet.

+0

@rozerro Wir können es weiter vereinfachen. Die Antwort wurde aktualisiert. Vielleicht möchten Sie es versuchen. –