QueryDsl 中的 IF 函数

问题描述

如何在 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()) 是执行此操作的首选方法。模板表达式也可以使用,但更容易受到查询注入错误的影响。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...