您有几种选择,甚至可以结合使用:
使用代码生成器的模式映射功能
如果要避免将
"develop"模式名称硬连接到生成的类中,可以将其重写为其他某种模式名称,如下所示:
<configuration> <generator> <database> <schemata> <schema> <inputSchema>develop</inputSchema> <outputSchema>stage</outputSchema> </schema> ...
当然,这只是推迟了问题,因为架构名称仍在生成的代码中。您可以使用以下选项从生成的代码中完全删除该名称:
<configuration> <generator> <database> <schemata> <schema> <inputSchema>develop</inputSchema> <outputSchemaToDefault>true</outputSchemaToDefault> </schema> ...
现在,这将从生成的代码中删除所有架构引用,因此生成的类可以在您的所有架构上运行(当然,请确保使用正确的连接和search_path!)
我认为这是最适合您的选择
此处有更多详细信息:https :
//www.jooq.org/doc/latest/manual/pre-generation/pregen-advanced/pregen-
config-catalog-and-schema-
mapping/
使用运行时模式映射功能
您可以按原样保留生成的代码,并在运行时使用
Settings(提供给jOOQ运行时
Configuration)重写所有对象引用。同样,您有两个相同的选择:
映射架构名称:
new Settings().withRenderMapping(new RenderMapping() .withSchemata(new MappedSchema() .withInput("develop") .withOutput("stage") ));删除所有架构名称:
new Settings().withRenderSchema(false);
此处有更多详细信息:https :
//www.jooq.org/doc/latest/manual/sql-building/dsl-context/custom-
settings/settings-render-mapping/



