У меня есть приложение spring с сущностью user
и таблицей users
.Я хотел бы получить количество всех пользователей, сгруппированных по определенным полям (не по группе, а всего ).В SQL это будет:
select
count(*) OVER () as totalRecords
from users u
group by
u.first_name,
u.last_name,
u.age
order by u.age DESC
OFFSET 1 ROWS FETCH NEXT 1 ROWS ONLY;
Но я действительно не могу сделать это, используя критерии гибернации.Я мог бы сделать что-то вроде:
public Long getTotalCount() {
ProjectionList groupBy = projectionList();
groupBy.add(groupProperty("firstName"), "first_name");
groupBy.add(groupProperty("last_name"), "last_name");
groupBy.add(groupProperty("age"), "age");
groupBy.add(Projections.rowCount());
return (Long) getSession().createCriteria("User")
.setProjection(groupBy)
.uniqueResult();
}
но это не то, что я хочу.Он рассчитывает на каждую группу, я хотел бы подсчитать строки, которые являются результатом group by
предложения