java - 在 hibernate 聚合函数中使用函数作为参数

标签 java hibernate orm hql

我想在 HQL 中执行以下查询:

select count(distinct year(foo.date)) from Foo foo  

但是,这会导致以下异常:

org.hibernate.hql.ast.QuerySyntaxException: expecting CLOSE, found '(' near line 1, column 27

似乎 hibernate 不允许使用函数作为其聚合函数的参数。有什么办法可以达到要求的结果吗?

最佳答案

  1. 选择整个日期
  2. 遍历结果并从每个日期提取一个新的年份集合

一开始听上去好像没什么效果,后来就是多了一个O(n),估计N也没那么大。

另一种方法是使用原生 SQL 查询。

关于java - 在 hibernate 聚合函数中使用函数作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2092111/

相关文章:

java - 使用 JAXB 注释外部库中的对象

java - 如何使用 setMaxResults 更新 hibernate 查询?

java - Hibernate vs Spring 连接获取策略

orm - Gorm Golang 获取集合及其关系

java - Spring boot Maven MultiModule Rest api 调用

java - 什么是用于实时系统的良好日志记录库(快速且不创建对象)?

Hibernate 命名实体的自动映射

java - 如何使用 Hibernate 在 Spring Boot 中处理数据库迁移?

orm - 没有 JOIN 的生活......理解和常见做法

javascript - jQuery 日期选择器和自动完成功能结合在一起