У меня есть следующий код
Criteria criteria = this.getCriteriaForClass(DeviceListItem.class);
Projection rowCountProjection = Projections.countDistinct("color");
criteria.setProjection(rowCountProjection);
int rowCount = ((Long) criteria.uniqueResult()).intValue();
return rowCount;
, цель которого - узнать количество строк с разными значениями для поля с именем "color".Проблема в том, что
Projections.countDistinct("color");
возвращает то же количество результатов, что и
Projections.count("color");
, даже если в представлении базы данных есть несколько строк одного цвета.При преобразовании объекта Criteria в SQL я вижу, что SQL, создаваемый Hibernate, равен
select count(this_.COLOR) as y0_ from DEVICESLIST_VIEW this_ where 1=1
, когда я ожидаю, что он будет
select count(distinct this_.COLOR) as y0_ from DEVICESLIST_VIEW this_ where 1=1
Почему он не работает так, как ожидалосьи есть ли какое-то лекарство?К сожалению, у меня нет возможности использовать HQL в этом случае.