我想在使用標準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。
感謝