Je souhaite utiliser une projection d'écart-type dans une requête que je construis en utilisant l'API de critères. Je peux faire quelque chose simplement comme çaUtilisation de différentes fonctions de projection dans les critères Hibernate API basée sur le dialecte
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 };
}
}
et je peux l'utiliser avec mes critères:
myCriteriea.setProjection(new StdDevProjection(myproperty));
C'est tout bon. Mais mon problème est que j'utilise HSQLDB pour tous les tests unitaires db etc, alors que nous utilisons Oracle pour le déploiement. La fonction stddev fonctionne parfaitement dans Oracle, mais ce n'est pas le cas dans HSQLDB. HSQLDB a stddev_pop et stddev_samp. Donc est-il possible que je puisse utiliser une fonction différente basée sur le dialecte. Je peux peut-être étendre le dialecte HSQL pour enregistrer le "stddev" à la fonction HSQL appropriée, mais je ne sais pas comment utiliser une fonction hsql dans une requête construite en utilisant l'API Criteria.
Toute aide serait gret.
Merci