2013-06-28 4 views
2

Я пытаюсь создать оператор представления с помощью Jooq, как мы можем это сделать?Создание инструкции VIEW в Jooq

Или у нас есть другой вариант?

Jooq версия: 3.0.1

+0

Можете ли вы быть более конкретными? Вы хотите выразить оператор DDL 'CREATE VIEW x AS SELECT ...' или вы хотите создать «представление» в jOOQ, т. Е. Объект, который моделирует подзаголовок, но ведет себя как таблица? –

+0

@Lukas, я хотел создать представление, я думаю, что если бы я просто хотел получить доступ к созданному представлению, инструмент Jooq Generator мог бы это сделать? –

+0

Да, генератор имеет дело с представлениями точно так же, как если бы они были таблицами ... Я создам ответ –

ответ

1

Нет явной поддержки для CREATE VIEW Заявления DDL в jOOQ 3.1, хотя some users on the user group уже были сложными jOOQ для неофициальной поддержки. Так как это может быть общий потребительной случай, возможно, имеет смысл поставить его на дорожную карту: #2582

Перед добавлена ​​любая официальная поддержка, вы можете прибегнуть к простой SQL:

DSLContext ctx = DSL.using(...); 
ctx.execute("CREATE OR REPLACE VIEW my_view AS {0};", 
    select(a, b).from(my_table).where(...) 
); 

выше пример использует DSLContext.query(...) для построения простых SQL-запросов, которые принимают объекты jOOQ QueryPart как аргументы.

+0

Отлично, спасибо @Lukas –

2

Создание представлений не поддерживается в jOOQ. Как указано на jOOQ home page:

  • Когда не использовать jOOQ:
    • ...
    • Когда вам нужно написать заявления DDL. jOOQ поддерживает только инструкции DML.
    • ...

CREATE VIEW является DDL не DML.

+0

@ lukas-eder любые мысли? –

+0

Это правда, хотя использование jOOQ для оператора 'CREATE VIEW' было недавно опрошено в [jOOQ User Group] (https://groups.google.com/forum/#!topic/jooq-user/h7U3Q9qhzGk). Если вы добавите созданный jOOQ оператор 'SELECT' с предложением' CREATE OR REPLACE VIEW', вам нечего будет использовать jOOQ для создания представлений, в принципе –