问题描述
如何在 queryDsl
中编写此查询
select * from Table order by if(a = 0,b,a) desc
我在 if(a = 0,a)
部分挣扎
解决方案
orderBy(Expressions.stringTemplate("if({0} = 0,{1},{2})",a,a).desc())
解决方法
orderBy((new CaseBuilder().when(a.eq(0)).then(b).otherwise(a)).desc())
是执行此操作的首选方法。模板表达式也可以使用,但更容易受到查询注入错误的影响。