hibernate - 仅比较 HQL 中的日期组件

标签 hibernate hql

我需要按时间使用 HQL 过滤选择一些实体。但我只需要比较没有时间的日期组件。例如 1.1.2011 12.00 和 1.1.2011 13.20 必须相等。

我可以使用什么运算符?

@Query("FROM Item item " +
  "WHERE item.date [equality by date operator] :date " )
List<Item> findByDate(@Param("date") Date date);

最佳答案

如果您不介意特定于 DB 的功能,您可以这样做(以 Oracle 为例)。

@Query("FROM Item item WHERE trunc(item.date) = trunc(:date) " )
List<Item> findByDate(@Param("date") Date date);

您可以使用它,因为 OracleDialect 注册 trunc作为 StandardSQLFunction和 Oracle 的 TRUNC删除日期的时间部分。

关于hibernate - 仅比较 HQL 中的日期组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8166258/

相关文章:

java - Spring Boot 配置文件 - 运行 sql 脚本而不是 ddl-auto

java - 将数字 (22,21) 映射到 BigDecimal 时,Hibernate 在结果中丢失精度

java - 使用 Hibernate 表示表关系是个好主意吗?

java - HQL 变量 过滤案例

mongodb - 如何在HQL/GORM中显示 “where value is in dynamic list”? (MongoDB)

hibernate - 如何将多个值传递给也与其他参数相对应的参数?

java - BeanCreationExceptionEntityManagerFactoryNoClassDefFoundErrorValidatorFactory

java - 在 hibernate 命名查询中调用自定义函数

java - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : Unknown column 'productId3' in 'where clause'

Hibernate setMaxresults 与 Detachedcriteria 将不起作用