querydsl に書くかなり単純なケース ステートメントがあります。
case when column >= 1 and column < 31 then 1 else 0 end
私は次のアプローチを試しました:
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 句の指定を避ける方法や、when 句の中に goe 式と lt 式を入れる方法はありますか?
ところで、ケース式では数字を直接指定してもうまくいかないようです。Expressions.numberTemplate を使用する必要があります