QueryDSL(JPA)dayOfYear,dayOfMonth转换为hibernate

时间:2013-09-24 14:36:50

标签: hibernate jpa querydsl

我在运行此java代码时遇到异常:

List<Tuple> companies2accLoginCount = accoutLoginCountQuery
                    .listDistinct(new QTuple(QCompany.company1.id, QAccountLogin.accountLogin.loginDatetime.dayOfMonth().countDistinct()));

例外:

java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: expecting CLOSE, found '(' near line 1, column 48 [select distinct company1.id, count(distinct day(accountLogin.loginDatetime))
from de.workxl.cxlbackend.database.model.Company company1
  left join company1.accounts as account
  left join account.accountLogins as accountLogin
where accountLogin.loginDatetime > ?1
group by company1.id
having count(distinct day(accountLogin.loginDatetime)) >= ?2]

dayofyear 相同。在白天或白天之后,预计看起来不是左括号。

我正在使用Hibernate 4.2.2和QueryDSL 2.9.0

更新:我刚刚设法将项目迁移到QueryDSL 3.2.3(必须将spring-data-commons升级到1.6.1,将spring-data-jpa升级到1.4。 1也是如此)但例外仍然存在。

1 个答案:

答案 0 :(得分:2)

这似乎是Hibernate解析器中的一个错误。这适用于EclipseLink。