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

如何执行Jooq代码重新生成?

戚鸿
2023-03-14

我正在使用Jooq和GradleJooq插件生成代码。它工作得很好,但在添加表或删除列时,我在更新生成的代码时遇到了一个问题。我可以通过更改“packageName”配置参数来强制更新,并构建一个新的包。通过返回原始名称,代码按预期进行了更新。

在使用我的设置更改模式后,重新生成代码的正确方法是什么?

jooq {
version = '3.13.1'
edition = 'OSS'
generateSchemaSourceOnCompilation = true
sample(sourceSets.main) {
    jdbc {
        driver = 'org.postgresql.Driver'
        url = 'jdbc:postgresql://0.0.0.0:5432/victor'
        user = 'postgres'
        password = 'docker'
        properties {
            property {
                key = 'ssl'
                value = 'false'
            }
        }
    }
    generator {
        name = 'org.jooq.codegen.DefaultGenerator'
        strategy {
            name = 'org.jooq.codegen.DefaultGeneratorStrategy'
        }
        database {
            name = 'org.jooq.meta.postgres.PostgresDatabase'
            inputSchema = 'public'
            forcedTypes {
                forcedType {
                    name = 'varchar'
                    expression = '.*'
                    types = 'INET'
                }
            }
        }
        generate {
            relations = true
            deprecated = false
            records = true
            immutablePojos = true
            fluentSetters = true
        }
        target {
            packageName = 'net.bravo.victor.model'
            directory = 'src/'
        }
    }
}

我正在使用https://github.com/etiennestuder/gradle-jooq-plugin

plugins {
    id 'nu.studer.jooq' version '4.1'
}

共有1个答案

薛弘厚
2023-03-14

我不确定这是否正确,但对我来说:

generateNavigoJooqSchemaSource {
    dependsOn cleanGenerateNavigoJooqSchemaSource
}

task buildJooq(dependsOn: generateNavigoJooqSchemaSource)

所以我创建了任务名(buildJooq),我记得它依赖于generate任务(generatenavigoqooqschemasource),也依赖于clean任务(cleangenavigoqooqschemasource)。

在此之前,我使用了此代码,该代码也适用:

tasks.named("generateNavigoJooqSchemaSource").configure {
    outputs.upToDateWhen { false }
}

它也迫使运行每一次。

 类似资料:
  • 我更改了数据库中的一些表,所以我想生成记录、键、类等。但是每次我这样做时,它总是跳过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

  • 我们正在改变数据库,从一个支持8位int的数据库到一个不支持8位int的数据库。当Liquibase创建一个DB导致jOOQ生成“短”变量时,我们的代码会中断,但我们的代码使用字节/字节-这会中断代码签名。 有人建议我们继续使用以前的数据库(HSQLDB)来生成代码,而不是重新编码,它“应该”与新数据库一起运行。有不同的意见,除了直觉,我找不到任何决定性的东西,这似乎与jOOQ的设计目的背道而驰。