Я хочу использовать проекцию стандартного отклонения в запросе, который Im создает с использованием API критериев. Я могу сделать что-то просто, как этотИспользование различных проекционных функций в критериях Hibernate API, основанных на Dialect
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 };
}
}
, а затем я могу использовать его с моими критериями, как:
myCriteriea.setProjection(new StdDevProjection(myproperty));
Это все хорошо. Но моя проблема заключается в том, что я использую HSQLDB для любых тестов модулей db и т. Д., Тогда как мы используем Oracle для развертывания. Функция stddev отлично работает в оракуле, но ее нет в HSQLDB. HSQLDB имеет stddev_pop и stddev_samp. Так что я могу использовать другую функцию, основанную на диалекте.
Возможно, я могу расширить диалоги HSQL, чтобы зарегистрировать «stddev» в соответствующей функции HSQL, но затем я не уверен, как использовать функцию hsql в запросе, построенном с использованием API критериев.
Любая помощь может быть решена.
Благодаря