我有一个复杂的纯SQL查询(带有子选择,多个连接,数据库特定的功能),但我想使用jOOQ的DSL来生成例如order by子句。
我想要达到的目标是:
DSL
.using(datasource)
.select("select column from table")
.orderBy(DSL.fieldByName("column"))
jOOQ可以转变为:
select * (select column from table) q order by q.column;
可以这样做吗?
答案 0 :(得分:1)
你关闭了。以下是可能的:
DSL.using(datasource, dialect)
.select()
.from("(select column from table) t")
.orderBy(DSL.field("t.column"));
你必须自己包装(并且依赖于SQL方言,也可以重命名)你的派生表。
请注意,我使用的是DSL.field()
,而不是DSL.fieldByName()
,因为后者会生成区分大小写的column
引用。然后,您的纯SQL查询还必须生成区分大小写的column
引用。