使用HQL或CriteriaBuilder查询的

时间:2017-05-03 12:43:33

标签: java sql hql hibernate-criteria nested-query

我正在尝试按下面提到的逐个查询结果

描述:我有一个LogDetail表,它有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
    

上表中的预期结果

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

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

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

有没有人有这个想法?

1 个答案:

答案 0 :(得分:1)

您可以尝试以下

获取结果的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查询中,根据列上的列映射进行映射

希望这能解决你的问题。