Mam następujący kodProjections.countDistinct Hibernate produkuje nieoczekiwany wynik
Criteria criteria = this.getCriteriaForClass(DeviceListItem.class);
Projection rowCountProjection = Projections.countDistinct("color");
criteria.setProjection(rowCountProjection);
int rowCount = ((Long) criteria.uniqueResult()).intValue();
return rowCount;
, którego celem jest, aby dowiedzieć się liczbę wierszy z różnych wartości dla pola o nazwie „kolor”. Problemem jest to, że
Projections.countDistinct("color");
zwraca taką samą liczbę wyników jako
Projections.count("color");
chociaż istnieje wiele wierszy z tego samego koloru w widoku bazy danych. Przy konwersji obiektu Criteria do SQL, widzę, że SQL jest produkowane przez Hibernate
select count(this_.COLOR) as y0_ from DEVICESLIST_VIEW this_ where 1=1
kiedy będę oczekiwać, że będzie
select count(distinct this_.COLOR) as y0_ from DEVICESLIST_VIEW this_ where 1=1
Dlaczego to nie działa tak jak oczekiwano, a jest tam jakiś zaradzić? Niestety nie mam możliwości użycia HQL w tym przypadku.