ich den folgenden Code habeProjections.countDistinct mit Hibernate zu unerwartetem Ergebnis
Criteria criteria = this.getCriteriaForClass(DeviceListItem.class);
Projection rowCountProjection = Projections.countDistinct("color");
criteria.setProjection(rowCountProjection);
int rowCount = ((Long) criteria.uniqueResult()).intValue();
return rowCount;
, dessen Zweck es ist, die Anzahl der Zeilen mit unterschiedlichen Werten für das Feld „Farbe“ genannt, um herauszufinden. Das Problem ist, dass
Projections.countDistinct("color");
die gleiche Anzahl von Ergebnissen als
gibt
Projections.count("color");
obwohl es mehrere Zeilen mit der gleichen Farbe in der Datenbankansicht. Wenn die Kriterien Objekt SQL Umwandlung, sehe ich, dass die von Hibernate erzeugt SQL
select count(this_.COLOR) as y0_ from DEVICESLIST_VIEW this_ where 1=1
ist, wenn ich es
select count(distinct this_.COLOR) as y0_ from DEVICESLIST_VIEW this_ where 1=1
Warum funktioniert es nicht erwarten würde wie erwartet und dort einige Abhilfe? Leider habe ich in diesem Fall keine Möglichkeit, HQL zu verwenden.