4

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 を使用する必要があります

4

0 に答える 0