【发布时间】:2018-11-13 23:27:56
【问题描述】:
我正在尝试连接两个表并输出它们并按两个字段按字母顺序对它们进行排序,例如order by coalesce(tableA.name, tableB.name)(不是order by tableA.name, tableB.name),所以结果应该是这样的:
tableA.name tableB.name
A null
B null
null C
D null
null E
在普通 SQL 中它可以正常工作,但是当我尝试使用 QueryDSL 执行此操作时,它会在生成的 select 语句中添加额外的列,并且仅按第一个指定的列进行排序:
//java code
query.orderBy(qTableA.name.coalesce(qTableB.name).asc());
//generated sql code
SELECT ...
COALESCE(tablea_.NAME, tableb_.NAME) AS col_9_0_
FROM ...
WHERE ...
ORDER BY tablea1_.NAME ASC
有人能说出它为什么会这样吗?是否有可能让它按我的预期工作?
【问题讨论】: