我想在 HQL 中执行以下查询:
select count(distinct year(foo.date)) from Foo foo
但是,这会导致以下异常:
org.hibernate.hql.ast.QuerySyntaxException: expecting CLOSE, found '(' near line 1, column 27
似乎 hibernate 不允许使用函数作为其聚合函数的参数。有什么办法可以达到要求的结果吗?
最佳答案
- 选择整个日期
- 遍历结果并从每个日期提取一个新的年份集合
一开始听上去好像没什么效果,后来就是多了一个O(n),估计N也没那么大。
另一种方法是使用原生 SQL 查询。
关于java - 在 hibernate 聚合函数中使用函数作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2092111/