是否有一个 jOOQ 工具来验证生成的定义是否仍然正确?

Posted

技术标签:

【中文标题】是否有一个 jOOQ 工具来验证生成的定义是否仍然正确?【英文标题】:Is there a jOOQ tool to verify generated definitions are still correct? 【发布时间】:2021-04-02 02:57:40 【问题描述】:

我正在使用 jOOQ 基于 Liquibase 维护的模式生成的类。我正在寻找一种方法来确保 jOOQ 类与实际数据库保持一致。首选方法是创建一个测试,以便在创建拉取请求时由我们的 CI 工具运行。

是否有工具可以验证 jOOQ 生成的定义是否仍然正确?

【问题讨论】:

【参考方案1】:

涉及构建设置的两种明显方法是:

签入生成的源(当它们不是最新的时获取差异)。另请参阅有关code generation and version control 的手册部分。 在您的构建中包含 Liquibase 迁移和 jOOQ 代码生成。这样,生成的源数据库始终与您的 Liquibase 迁移脚本中定义的内容保持同步。您还可以使用LiquibaseDatabase 直接基于您的 Liquibase 文件生成代码,如果您没有做任何花哨的、特定于供应商的事情。

使用程序化 jOOQ API 的一种不太明显的方法是使用 Meta.migrateTo(Meta) 比较 Meta 的两个版本:

// This corresponds to the meta data from your live connection
Meta m1 = ctx.meta();

// This corresponds to the meta data from your generated catalog (or schema, table, etc)
Meta m2 = ctx.meta(catalog);

// This is a generated migration script between the two versions, should be empty
Queries queries = m1.migrateTo(m2);

这种方法可能会奏效,尽管它有很多警告,这些警告在 jOOQ 3.14、3.15 中仍然得到修复。可以在这里看到正在进行的工作:https://github.com/jOOQ/jOOQ/projects/1,非常欢迎错误报告!

【讨论】:

以上是关于是否有一个 jOOQ 工具来验证生成的定义是否仍然正确?的主要内容,如果未能解决你的问题,请参考以下文章

通过使用 Jooq 和 JPA 的 @Column 注释来验证字段长度

是否有在本地验证 Azure DevOps Pipeline 的工具?

jOOQ 插入查询并返回生成的键

有没有办法在 JOOQ 中为具有相同表结构的多个模式设置代码生成?

jOOQ 和 Spring 事务管理

是否可以更改 jOOQ DSL 查询的 SELECT/WHERE