我有一个表,其中包含每天的几条记录,每条记录都有一个表示日期时间的列。我想选择每天的记录数,所以我想在JPQL中创建一个查询,如下所示:
SELECT COUNT(*) FROM ORDERS o GROUP BY TRUNC(o.ORDER_DATE)不幸的是,在JPQL中没有像TRUNC这样的函数... :(我该怎么做呢?
发布于 2020-02-07 16:55:06
使用cast!这将会起作用
@Query("select new DBClass(COUNT(c.field1) as count,cast(c.created as date)) from Table c GROUP BY cast(c.created as date)")发布于 2012-05-21 23:51:43
我不确定它是否有效,但是你使用方法函数了吗?它会是这样的
Expression<Date> truncExpr = cb.function("TRUNC",Date.class,orders.get("orderDate"),"MM");
criteria.groupBy(truncExpr);发布于 2012-05-22 05:03:05
Hibernate在解释JPQL查询时,可以理解它所知道的任何函数。如果你使用的方言能听懂TRUNC,那就没问题了。如果不是,则创建自定义方言以注册TRUNC函数。
https://stackoverflow.com/questions/10688292
复制相似问题