使用 HQL 或 CriteriaBuilder 查询的嵌套查询

Nested Query with HQL or CriteriaBuilder Query

我正在尝试按如下所述的查询获取分组结果

描述:我有一个 LogDetail table,它有 created_date 字段和 UserId 字段。我想知道每天有多少用户登录。 created_date 列是 DateTime 类型

select t, count(t) from (select substr(created_date,0,10) as t from logdetail) group by t

如果我 运行 内部查询,它工作正常,但是当我 运行 嵌套查询时出现错误... "unexpected token: ( near line 1, column 32"

    
     ID       User    LoginDate               LogoutDate  
     a000001  Arvind  06-05-17 12:15:00  06-05-17 12:13:00
     a000002  Murty   07-05-17 12:15:00  07-05-17 12:51:00
     a000003  John   07-05-17 12:15:00  07-05-17 12:42:00 
     a000004  John    07-05-17 02:27:00  07-05-17 03:25:00
     a000001  Tej     08-05-17 12:15:00  08-05-17 02:15:00
     a000001  John    08-05-17 12:15:00  08-05-17 01:55:00
    

上述的预期结果table

    
     LoginDate  Frequency  
    06-05-17    01
    07-05-17    03
    08-05-17    02
    

注意:源 table 有多个相同用户 john 的条目,第二点是源日期字段有日期时间,所以首先我们只需要从中获取日期部分,然后应用分组

我正在 HQL 或 Criteria Builder 查询中寻找解决方案。

有人知道吗?

您可以尝试如下

SQL查询得到结果

Select trunc(LoginDate), count(ID) from logdetail group by trunc(LoginDate);

相同的 HQL 查询将是

select trunc(ld.loginDate), count(ld.Id) from logDetail ld group by trunc(ld.loginDate)

注意:在 Hql 查询中,根据您在列上的列映射进行映射

希望这能解决您的问题。