2017-02-15 7 views
0

Ich brauche die JPA Criteria API verwenden, um eine Zusammenfassung von Daten im FormatJPA Kriterien Abrufen von Item und Count

"Distinct Value" zurückzukehren -> Graf von Distinct Wert

CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); 
    CriteriaQuery<Tuple> criteriaQuery = criteriaBuilder.createQuery(Tuple.class); 
    Root<User> root = criteriaQuery.from(User.class); 

    // this is where I want to get a count of the user levels and how many users per level 
    criteriaQuery.select(criteriaBuilder.tuple(
     root.get(User_.userLevel), 
     // user count? 
    )); 

Ich bevorzuge Tun Sie dies über die Kriterien-API.

Kann jemand helfen?

Jason

Antwort

1

Dies sollte den Trick:

CriteriaBuilder cb = entityManager.getCriteriaBuilder(); 
CriteriaQuery<Tuple> tupleQuery = cb.createTupleQuery(); 
Root<User> root = tupleQuery.from(User.class); 

tupleQuery 
    .select(cb.tuple(root.get(User_.userLevel), cb.distinctCount(root))) 
    .groupBy(root.get(User_.userLevel)); 

List<Tuple> results = entityManager.createQuery(tupleQuery).getResultList(); 
+0

Das tat es, danke! – Jason