如何在查询dsl中编写此case语句

时间:2014-06-17 13:30:36

标签: querydsl case-expression

我在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

0 个答案:

没有答案