QueryDSL:期待CLOSE,找到'('

时间:2016-09-15 14:39:42

标签: java hibernate jpa querydsl

以下QueryDSL代码出了什么问题:

query.from(chat).where(
chat.datePosted.goe(startDate.atStartOfDay()).
and(chat.datePosted.lt(endDate.plusDays(1).atStartOfDay()))).    
groupBy(date(chat.datePosted)).
list(date(chat.datePosted), date(chat.datePosted).count());

我得到这样的例外:

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: expecting CLOSE, found '(' near line 1, column 41 [select date(chat.datePosted), count(date(chat.datePosted))
from com.test.model.Chat chat
where chat.datePosted >= ?1 and chat.datePosted < ?2
group by date(chat.datePosted)]

我使用的是Spring Boot 1.3.6和QueryDSL 3.7.4(通过Hibernate的JPA)。

1 个答案:

答案 0 :(得分:3)

拒绝,因为我可能看起来using functions as arguments in hibernate aggregation functions被禁止,例如:count(date(field))不适用于Hibernate。真可惜!

在我的情况下,简单地删除对count()下的另一个函数的任何调用,因为结果是相同的。看起来像是一个Hibernate实现问题,因为Timo在EclipseLink上提到了相关的问题。