我需要按时间使用 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/