我在querydsl中写了一个相当简单的案例陈述:
列> = 1且列< 31 然后1其他0结束
我尝试了以下方法:
table.column.goe(Expressions.numberTemplate(Long.class,"1")).and(table.column.lt(Expressions.numberTemplate(Long.class, "31"))).when(Expressions.booleanTemplate("true")).then(Expressions.numberTemplate(Long.class, "1")).otherwise(Expressions.numberTemplate(Long.class, "0"))
麻烦的是,这个表达式被解释为:
select sum(case when table.column >= 1 and table.column < 31 = true then 1 else 0 end)
有没有办法避免指定when子句或将goe和lt表达式放在when子句中?
BTW,直接指定数字似乎不适用于case表达式。需要使用Expressions.numberTemplate