2015-01-08 17 views
6

Chcę policzyć group by wierszy kryteria hibernacji API, ale mogę tylko liczyć liczbę wierszy zagregowane w każdej grupie:Liczba grupy według wierszy w hibernacji kryteriów

ProjectionList projectionList = Projections.projectionList() 
     .add(Projections.groupProperty("color")) 
     .add(Projections.rowCount()); 
Criteria criteria = session.createCriteria("ProductEntity"); 
criteria.setProjection(projectionList); 
// adding some criteria 
List results = criteria.list(); 

Powyższy kod wyniki w tym zapytaniu:

select p.color, count(*) from product p group by p.color 

Ale chcę to zapytanie:

select count(*) from (select p.color from product p group by p.color) 

Wiem, że jest to możliwe z HQL, ale nie chcę z niego korzystać. Jak mogę to zrobić za pomocą API Criteria?

Odpowiedz

2

Jeśli chcesz wiedzieć, ile różnych kolorach są obecne należy użyć

Projections.countDistinct("color") 

Spowoduje to zapytanie, które zwróci ten sam rezultat jak to:

select count(*) from (select p.color from product p group by p.color) 
Powiązane problemy