У меня есть следующий кодProjections.countDistinct с Hibernate производит неожиданный результат
Criteria criteria = this.getCriteriaForClass(DeviceListItem.class);
Projection rowCountProjection = Projections.countDistinct("color");
criteria.setProjection(rowCountProjection);
int rowCount = ((Long) criteria.uniqueResult()).intValue();
return rowCount;
, целью которого является выяснить количество строк с разными значениями поля с именем «цвет». Проблема заключается в том, что
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 в этом случае.