如何配置jOOQ自动生成器在liquibaseschema xml文件的基础上运行



我希望jOOQ自动代码生成器基于resources文件夹中的liquibaseschema xml文件运行(而不是基于数据库连接(。pom.xml中的配置部分如下所示:

<configuration xmlns="http://www.jooq.org/xsd/jooq-codegen-3.13.4.xsd">
<generator>
<database>
<name>org.jooq.meta.extensions.liquibase.LiquibaseDatabase</name>
<includes>.*</includes>
<excludes></excludes>
<inputSchema>public</inputSchema>
<properties>
<property>
<key>scripts</key>
<value>/liquibase-outputChangeLog.xml</value>
</property>
<property>
<key>includeLiquibaseTables</key>
<value>true</value>
</property>
<property>
<key>database.liquibaseSchemaName</key>
<value>public</value>
</property>
</properties>
</database>
<target>
<packageName>jooqGenerated</packageName>
<directory>target/generated-sources/jooq</directory>
</target>
</generator>
</configuration>

表示,它无法在指定的文件夹中生成jOOQ代码

[ERROR] azure/postgresql/TrackerAzureImpl.java: package ...tables does not exist (for all the tables, I cannot even see elsewhere where jooq code is getting generated),
Also one warning: No schemata were loaded: [WARNING] No schemata were loaded  : Please check your connection settings, and whether your database (and your database version!) is really supported by jOOQ. Also, check the case-sensitivity in your configured <inputSchema/> elements : {=[public]}

请引导。

这很可能是由于一个错误:https://github.com/jOOQ/jOOQ/issues/12997

解释和解决方法

在后台,在jOOQ 3.16中,LiquibaseDatabaseDDLDatabaseJPADatabase都使用内存中的H2数据库模拟数据库迁移。这在未来可能会改变,但现在就是这样。在H2中,默认情况下,所有标识符都是大写,<inputSchema/>配置也是如此。这意味着您应该包括PUBLIC模式,而不是public模式。

请注意,代码生成输出将包含对PUBLIC的引用,而不是对public的引用,因此,如果要继续使用LiquibaseDatabase,则必须在运行时使用RenderQuotedNames设置关闭对标识符的引用。

不在H2上模拟Liquibase的更稳健的替代方案

或者,您不必使用LiquibaseDatabase,正如我在其他地方提到的那样。您还可以使用testcontainers直接在PostgreSQL上运行实际的迁移,并对实际的PostgreSQL数据库进行反向工程,如本文所述。

相关内容

  • 没有找到相关文章

最新更新