【发布时间】:2020-12-20 15:47:26
【问题描述】:
是否可以在 HQL/JPQL 中将 LocalDate 与 LocalDateTime 进行比较?这是我对 spring 数据中存储库方法的查询,它应该返回每个所需日期的订单数量。订单实体中的字段deliveryDateTime 的类型为LocalDateTime。我想忽略时间部分,只比较日期部分。
@Query("SELECT new OrderCountPerDate(DATE(o.deliveryDateTime), COUNT(o.id)) FROM Order o WHERE DATE(o.deliveryDateTime) IN :dates GROUP BY DATE(o.deliveryDateTime) ")
List<LocalDate> findValidOrderDates(List<LocalDate> dates);
我当前的代码给了我这个错误:
java.lang.IllegalArgumentException: org.hibernate.QueryException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode
\-[METHOD_CALL] MethodNode: '('
+-[METHOD_NAME] IdentNode: 'DATE' {originalText=DATE}
看起来 DATE 方法不存在。那么,有没有其他办法呢?
【问题讨论】:
-
由于
DATE是未知的 HQL/JPQL 函数,因此您收到此错误。您可以尝试在您的休眠方言中定义适当的功能,然后使用它。你用什么数据库?deliveryDateTime列有什么数据库类型? -
@SternK 我正在使用 postgres,对于 LocalDateTime 我有时间戳类型
标签: hibernate spring-data-jpa spring-data hql jpql