Ich möchte eine Standardabweichungsprojektion in einer Abfrage verwenden, die Im unter Verwendung der Kriterien API konstruiert. Ich kann einfach etwas tun, wie dieseVerwenden unterschiedlicher Projektionsfunktionen in Hibernate-Kriterien-API basierend auf Dialekt
public class StdDevProjection extends AggregateProjection {
public StdDevProjection(String propertyName) {
super("stddev", propertyName);
}
public Type[] getTypes(Criteria criteria, CriteriaQuery criteriaQuery)
throws HibernateException {
return new Type[] { Hibernate.DOUBLE };
}
}
und dann kann ich es mit meinen Kriterien wie:
myCriteriea.setProjection(new StdDevProjection(myproperty));
Das ist alles gut. Aber mein Problem ist, dass ich HSQLDB für alle db Unit Tests usw. verwende, während wir Oracle für die Bereitstellung verwenden. Die stddev-Funktion funktioniert perfekt in Oracle, aber nicht in HSQLDB. HSQLDB hat Stddev_pop und Stddev_samp. Gibt es also eine andere Funktion, die auf dem Dialekt basiert?
Ich kann vielleicht den HSQL-Dialekt erweitern, um "stddev" auf die entsprechende HSQL-Funktion zu registrieren, aber dann bin ich nicht sicher, wie eine hsql-Funktion in einer Abfrage mit der Criteria-API verwendet wird.
Jede Hilfe wäre gret.
Dank