Объединить простой SQL и DSL в запросе SQL в JOOQ

1

У меня сложный простой 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;

Это можно сделать?

Теги:
jooq

1 ответ

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 учетом регистра.

  • 0
    Большое спасибо за помощь!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню