0

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

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

不幸的是,JPQL没有像TRUNC...这样的功能 :( 我该怎么做?

4

4 回答 4

1

使用演员表!那可行

@Query("select new DBClass(COUNT(c.field1) as count,cast(c.created as date)) from Table c GROUP BY cast(c.created as date)")
于 2020-02-07T08:55:06.117 回答
0

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

Expression<Date> truncExpr = cb.function("TRUNC",Date.class,orders.get("orderDate"),"MM");
criteria.groupBy(truncExpr);
于 2012-05-21T15:51:43.310 回答
0

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

于 2012-05-21T21:03:04.523 回答
0

我认为这应该是诀窍:

SELECT COUNT(*) FROM ORDERS o GROUP BY FUNC('TRUNC', o.ORDER_DATE)
于 2017-02-08T19:25:26.570 回答