Как написать это утверждение в запросе DSL

У меня есть довольно простой оператор 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?

Кстати, прямое указание чисел не работает в случае выражений. Необходимо использовать Expressions.numberTemplate

0 ответов

Другие вопросы по тегам