4

我有一个相当直截了当的 case 语句要写在 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 子句中?

顺便说一句,直接指定数字似乎不适用于 case 表达式。需要使用 Expressions.numberTemplate

4

0 回答 0