JPQL:按日期分组

时间:2012-05-21 15:39:08

标签: sql oracle hibernate jpa jpql

我有一个每天有几个记录的表,每个记录都有一个代表日期时间的列。 我想选择每天的记录数,所以我想在JPQL中创建一个类似下面的查询:

SELECT COUNT(*)FROM ORDERS o GROUP BY TRUNC(o.ORDER_DATE)

不幸的是,在JPQL中没有像TRUNC ......这样的函数:( 我该怎么办?

非常感谢!

的Fabio

4 个答案:

答案 0 :(得分:0)

我不确定它是否有效,但您是否使用方法功能? 它会像

Expression<Date> truncExpr = cb.function("TRUNC",Date.class,orders.get("orderDate"),"MM");
criteria.groupBy(truncExpr);

答案 1 :(得分:0)

解释JPQL查询时,Hibernate理解它所知道的任何函数。如果你使用的方言理解TRUNC,你会没事的。如果没有,请创建自定义方言以注册该TRUNC功能。

答案 2 :(得分:0)

我认为这应该是诀窍:

SELECT COUNT(*) FROM ORDERS o GROUP BY FUNC('TRUNC', o.ORDER_DATE)

答案 3 :(得分:0)

使用演员表!会起作用

$lines[] = new SoapVar($line,SOAP_ENC_OBJECT,"InvoiceLine","KashFlow");