【问题标题】:JOOQ generator: Missing nameJOOQ 生成器:缺少名称
【发布时间】:2016-01-09 22:15:07
【问题描述】:

我正在尝试使用 Postgres 和 Gradle 设置 JOOQ。

每当我运行生成任务时,我都会得到 ~ 20 Ambiguous type names:

不明确的类型名称:对象 pg_catalog.generate_series 生成一个类型 one.dbtest.db.pg_catalog.tables.GenerateSeries 它 与现有类型冲突 one.dbtest.db.pg_catalog.tables.GenerateSeries 关于一些操作 系统。使用自定义生成器策略来消除类型的歧义。 模棱两可的类型名称:对象 pg_catalog.generate_series 生成一个类型 one.dbtest.db.pg_catalog.tables.GenerateSeries 它 与现有类型冲突 one.dbtest.db.pg_catalog.tables.GenerateSeries 关于一些操作 系统。使用自定义生成器策略来消除类型的歧义。

还有数百个:

缺少名称:对象 jsonb_exists_all 包含一列 在位置 2 没有名称缺少名称:对象 jsonb_exists_any 在位置 1 包含一个没有名称的列 名称:对象 jsonb_exists_any 包含一个没有 位置 2 的名称缺少名称:对象 jsonb_ge 包含一个 在位置 1 没有名称的列缺少名称:对象 jsonb_ge 在位置 2 包含一个没有名称的列缺少名称
: 对象 jsonb_gt 在位置 1 包含一个没有名称的列 name :对象 jsonb_gt 包含一个没有名称的列 位置 2 缺少名称:对象 jsonb_hash 包含一列 在位置 1 没有名称缺少名称:对象 jsonb_in 在位置 1 包含一个没有名称的列缺少名称
: 对象 jsonb_le 在位置 1 包含一个没有名称的列 name :对象 jsonb_le 包含一个没有名称的列 位置 2 缺少名称:对象 jsonb_lt 包含一列 在位置 1 没有名称缺少名称:对象 jsonb_lt 在位置 2 包含一个没有名称的列缺少名称
: 对象 jsonb_ne 在位置 1 包含一个没有名称的列 name :对象 jsonb_ne 包含一个没有名称的列 位置 2

是否需要排除 pg* 类型?

生成任务取自 JOOQ 示例:

task generate << {
  def writer = new StringWriter()
  def xml = new groovy.xml.MarkupBuilder(writer)
    .configuration("xmlns": "http://www.jooq.org/xsd/jooq-codegen-3.7.0.xsd") {
    jdbc() {
      driver("org.postgresql.Driver")
      url("jdbc:postgresql://localhost/pagila")
      user("xxx")
      password("xxx")
    }
    generator() {
      database() {
        name { mkp.yield( 'org.jooq.util.postgres.PostgresDatabase' ) }
        exclude("pg.*")
      }
      generate() {}
      target() {
        packageName("one.dbtest.db")
        directory("src")
      }
    }
  }

  //println writer.toString()

  org.jooq.util.GenerationTool.main(
    javax.xml.bind.JAXB.unmarshal(
        new StringReader(writer.toString()),
        org.jooq.util.jaxb.Configuration.class
    )
  )
}

更新:数据库是来自http://pgfoundry.org/projects/dbsamples的pagila

【问题讨论】:

  • 请注意,我对 Java、Postgres 和 Gradle 大多是新手 :)
  • 发布用于生成 POJO 的 DDL
  • DDL?你的意思是生成数据库的SQL?我正在使用来自 pgfoundry.org/projects/dbsamples 的 pagila 进行测试

标签: java postgresql gradle jooq


【解决方案1】:

对于 Postgres,您还必须指定输入架构,所以它是:

generator() {
  database() {
    name { mkp.yield( 'org.jooq.util.postgres.PostgresDatabase' ) }
    inputSchema("public")
  }
[..]

【讨论】:

    猜你喜欢
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    • 2020-08-12
    • 2018-03-19
    相关资源
    最近更新 更多