2017-02-03 3 views
1

У меня есть база данных с таблицами и представлениями. Я использую JOOQ для генерации кода Java для intercat с данными.Jooq pojoImplements: view vs table

Я хочу, чтобы каждое созданное pojo для любой таблицы реализовало мой пользовательский интерфейс. Я выполнил это с помощью pojoImplements.

Это поведение требуется только для таблиц, я не хочу, чтобы созданные pojos для представлений реализовывали этот пользовательский интерфейс.

Есть ли какой-либо метод, может быть, в выражениях?, Применять некоторые правила к таблицам и другим представлениям?

ответ

1

Единственный способ сделать это - использовать флаг <expression>, который соответствует именам объектов, например.

<tables> 
    <table> 
    <expression>EXPRESSION_MATCHING_ONLY_TABLES</expression> 
    <pojoImplements>...</pojoImplements> 
    </table> 
</tables> 

Вы можете использовать префикс в качестве регулярного выражения, таких как T_.*?, если у вас есть строгие соглашения об именах (например, T_TABLE и V_VIEW и т.д.), или вы должны соответствовать всем именам таблиц в явном виде.

Если вы используете programmatic code generator configuration, вы можете сгенерировать это регулярное выражение с помощью запроса. В PostgreSQL этот запрос может выглядеть так:

SELECT string_agg(table_name, '|') 
FROM information_schema.tables 
WHERE table_schema = 'public' 
AND table_type = 'BASE TABLE' 
+0

Благодарим вас @Lukas за ваш ответ. –