我想在使用标准API构建的查询中使用标准偏差投影。我可以做一些简单的像这样在Hibernate标准中使用不同的投影函数基于方言的API
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函数在oracle中完美工作,但在HSQLDB中不存在。 HSQLDB有stddev_pop和stddev_samp。那么有什么方法可以根据方言使用不同的功能。
我也许可以扩展HSQL方言来注册“stddev”到适当的HSQL函数,但是我不知道如何在使用Criteria API构造的查询中使用hsql函数。
任何帮助将gret。
感谢