问题描述
当我这样做时,我收到错误 java.lang.IllegalArgumentException: Unsupported constant Mon Mar 01 00:00:00 GMT 2021
DateTimeExpression<Date> startOfMonth = new CaseBuilder()
.when(order.dueDate.lt(day))
.then(new Date())
.otherwise(new Date());
我使用的是 QueryDSL 3.6、Hibernate 5.1 和 Postgres 10。
解决方法
问题是 JPQL/HQL 不允许在 CASE WHEN
表达式中使用参数。您必须用文字替换常量。类似于以下内容:
.when(order.dueDate.lt(Expressions.templateExpression(Date.class,"'2021-01-01 00:00:00'"))
“THEN”和“ELSE”表达式中的常量应该没问题。