在jOOQ中的SQL查询中结合普通的SQL和DSL

时间:2014-11-27 11:17:43

标签: java sql jooq

我有一个复杂的纯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;

可以这样做吗?

1 个答案:

答案 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引用。