当前位置: 首页 > 知识库问答 >
问题:

跨多个分支的JOOQ代码生成策略

林威
2023-03-14

我想避免的一个问题是两个分支更新JOOQ生成的代码。我想这可能会导致混乱的合并冲突。使用JOOQ管理跨两个不同分支的数据库更改是否有最佳实践策略?

共有1个答案

陈季
2023-03-14

多模式版本代码生成将在未来的版本中使用https://github.com/jOOQ/jOOQ/issues/9626

上述所需基础设施的工作已在jOOQ 3.15中开始。有很多工作和开放性问题,但最终,可以定义一组应同时支持的源模式

  • 按代码生成

在此之前,您可能可以使用视图自己创建一个兼容层。例如:

-- Version 1
CREATE TABLE t (
  id INT PRIMARY KEY,
  col1 TEXT,
  col2 TEXT
);

-- Version 2
CREATE TABLE t (
  id INT PRIMARY KEY,
  -- col1 was dropped
  col2 TEXT,
  -- col3 was added
  col3 TEXT
);

现在为两个版本的客户端代码部署一个外观相同的视图:

-- Version 1
CREATE OR REPLACE VIEW v (id, col1, col2, col3) AS
SELECT id, col1, col2, NULL
FROM t;

-- Version 1
CREATE OR REPLACE VIEW v (id, col1, col2, col3) AS
SELECT id, NULL, col2, col3
FROM t;

如果您的RDBMS支持可更新视图,您可以像使用任何其他表一样使用它们,特别是在向生成的代码添加合成主键/合成外键时。

使用生成器策略,您可以进一步将生成的视图名称V重命名为T(假设您将实际的T排除在生成之外),并且您的客户机代码甚至不会注意到您用视图模拟了T表。

 类似资料:
  • 我更改了数据库中的一些表,所以我想生成记录、键、类等。但是每次我这样做时,它总是跳过jooq代码生成。 [INFO]--jooq-codegen-maven:3.11.10:generate(默认cli)@http网关--[INFO]跳过jooq代码生成 为了运行Jooq代码生成,我应该执行哪个mvn cmd?现在我使用: 谢谢

  • 我使用jOOQ程序代码生成数据库,但现在我遇到了一些问题。在数据库中,我有表A和表B。第一次都生成了pojo、dao、接口等。经过一段时间的开发,我发现表A需要添加一些字段或修改一些字段,所以我不得不再次编码,然后jOOQ代码生成器将覆盖现有的代码,这让我很难过。当我在排除表的情况下使用“排除A”时,发现只生成了表A的数据,表B将被删除。我不知道如何处理这个问题。我的代码生成器如下:

  • 是否有任何参数可以在jooq代码生成期间打开/关闭下一个查询的执行? 在有大量模式和对象的数据库上,执行大约需要一个小时

  • 我目前正在评估Jooq。我们在创建join语句时遇到了一些问题,如下所示: 但这并不奏效。我仍然有以为类型的字段。那么除了更改表列类型之外,我还能做些什么呢?

  • 我试图使用JOOQ连接到HSQLDB,但我失败了,这里是错误消息: 此查询也会在HSQLDB Manager上失败(与JOOQ代码生成器的错误相同): 此查询工作正常: 我认为问题出在“cc”限定符上(在查询返回的“CONSTRAINT_NAME”字段上),这是HSQLDB错误吗? 我正在使用: HSQLDB 2.3.1 JOOQ 3.2.3 谢谢Ciccio

  • 我有一个有许多表的数据库。我想开始使用jOOQ为我的应用程序。但是我不希望JOOQ为所有表生成代码,但只为表的一小部分生成代码。我如何配置它?