У меня точно такое же определение базы данных для нескольких баз данных (и серверов баз данных). Как мне сказать Jooq использовать ту же базу данных, что и «Соединение», которое я создал для подключения к БД?
Пример (для MySQL):
Все 3 базы данных имеют одинаковое определение, одни и те же таблицы, индексы и т. д. Одна TSM - это стандарт, который использует наше приложение.
Может мне стоит использовать DSL.using( Connection, Setting )
вместо DSL.using(Connection)
? Это то, что подразумевает руководство здесь?
Если у меня есть только одна схема «Вход», нужно ли ее указывать? Другими словами, могу я сделать что-то вроде этого:
Settings settings = new Settings()
.withRenderMapping(new RenderMapping()
.withSchemata(
new MappedSchema().withOutput(
databaseInfo.getProperties().getProperty("database.db"))));
Или мне нужно сделать что-то вроде этого:
Settings settings = new Settings()
.withRenderMapping(new RenderMapping()
.withSchemata(
new MappedSchema().withInput("TSM")
.withOutput(databaseInfo.getProperties().getProperty("database.db"))));
Я предполагаю, что вы используете генерацию кода. В этом случае проще всего вообще не генерировать схему, а использовать <outputSchemaToDefault>
в конфигурации генерации кода, например
<configuration>
<generator>
<database>
<inputSchema>your_codegen_input_schema_here</inputSchema>
<outputSchemaToDefault>true</outputSchemaToDefault>
</database>
</generator>
</configuration>
Подробности см. В руководстве: https://www.jooq.org/doc/latest/manual/code-generation/codegen-advanced/codegen-config-database/codegen-database-catalog-and-schema-mapping/
Если вы хотите сохранить сгенерированный код с квалификацией схемы и отображать вещи во время выполнения, то вторая попытка кажется правильной. Передайте это на ваш Configuration
(т.е. вызов DSL.using()
):
Settings settings = new Settings()
.withRenderMapping(new RenderMapping()
.withSchemata(new MappedSchema()
.withInput("TSM")
.withOutput(databaseInfo.getProperties().getProperty("database.db"))));
Более подробную информацию можно найти здесь: https://www.jooq.org/doc/latest/manual/sql-building/dsl-context/custom-settings/settings-render-mapping