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

Jooq代码生成“排除”不使用类型安全配置

甄佐
2023-03-14

我试图在使用TypeSafe配置时排除Liquibase创建的两个表。

jooq {
    # databasechangelog = Liquibase generated tables
    # databasechangeloglock = Liquibase generated tables
    excludes = "databasechangelog, databasechangeloglock"
  }

当我只提供一个排除项时,比如“datasechangelog”,它就可以工作了。

应使用逗号分隔多个排除项(http://www.jooq.org/doc/2.6/manual/code-generation/codegen-configuration/),但它生成了两个表。

这样做也是不允许的。

excludes=“databasechangelog”,“databasechangeloglock”

在库内部,它简化了调用此函数(注意:getExcludes是一个字符串

    database.setExcludes(new String[]{StringUtils.defaultString(d1.getExcludes())});

还有其他人遇到过这个问题吗?

这是我的代码生成

      new GenerationTool {
        setConnection(connection)
        run(new Configuration {
          withGenerator(new Generator {
            withName(config.jooq.generatorClass)
            withDatabase(new org.jooq.util.jaxb.Database {
              withIncludes(config.jooq.includes)
              withExcludes(config.jooq.excludes)
              withInputSchema(config.jooq.inputSchema)
              withName(config.jooq.databaseClass)
            })
            withTarget(new Target {
              withPackageName(config.jooq.pkg)
              withDirectory(config.jooq.directory)
            })
            withGenerate(new Generate {
              setDaos(true)
            })
          })
        })
      }

共有1个答案

金承嗣
2023-03-14

您正在引用2.6版的手册。在过去,我们在包含/排除中使用逗号分隔的表达式列表——但是信不信由你,有些人的表/列名中有逗号,这就是我们丢弃逗号的原因。毕竟,包含/排除只是正则表达式,您可以使用“联合运算符”分隔您的单个模式,管道:|

即写:

jooq {
    # databasechangelog = Liquibase generated tables
    # databasechangeloglock = Liquibase generated tables
    excludes = "databasechangelog|databasechangeloglock"
}

这也记录在“特征移除”一节中(寻找“逗号分隔”):http://www.jooq.org/doc/latest/manual/reference/migrating-to-3.0

 类似资料:
  • 我更改了数据库中的一些表,所以我想生成记录、键、类等。但是每次我这样做时,它总是跳过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基于我现有的postgresdb生成类。在我的约克。xml config I省略了任何inputSchema标记,以便JOOQ生成它找到的所有模式: 但是,我想从生成的内容中排除信息模式。有没有办法以黑名单的方式做到这一点?还是必须为除信息模式之外的所有模式添加输入模式?

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