【问题标题】:"Ambiguous type name" error while generating code with jOOQ and Gradle使用 jOOQ 和 Gradle 生成代码时出现“不明确的类型名称”错误
【发布时间】:2020-11-14 05:30:22
【问题描述】:

当我尝试使用 jOOQ 生成代码时,会遇到很多错误,例如:

     Ambiguous type name      :
The object pg_catalog.unnest generates a type org.jooq.example.gradle.db.pg_catalog.tables.Unnest
    which conflicts with the existing type
    org.jooq.example.gradle.db.pg_catalog.tables.Unnest on some operating systems.
    Use a custom generator strategy to disambiguate the types.

不确定操作系统应该与它有什么关系。以前从未使用过 jOOQ。据我了解,它应该连接到 Postgres 数据库并生成一些 Java 代码,以后可以使用这些代码对数据库运行查询。

我在build.gradle中有如下配置(取自https://www.jooq.org/doc/latest/manual/code-generation/codegen-gradle/

// Use your favourite XML builder to construct the code generation configuration file
// ----------------------------------------------------------------------------------
def writer = new StringWriter()
def xml = new groovy.xml.MarkupBuilder(writer)
        .configuration('xmlns': 'http://www.jooq.org/xsd/jooq-codegen-3.13.0.xsd') {
            jdbc() {
                driver('org.postgresql.Driver')
                url('jdbc:postgresql://localhost:5432/metrics')
                user('postgres')
                password('pwd')
            }
            generator() {
                database() {
                }

                // Watch out for this caveat when using MarkupBuilder with "reserved names"
                // - https://github.com/jOOQ/jOOQ/issues/4797
                // - http://stackoverflow.com/a/11389034/521799
                // - https://groups.google.com/forum/#!topic/jooq-user/wi4S9rRxk4A
                generate() {
                }
                target() {
                    packageName('org.jooq.example.gradle.db')
                    directory('src/main/java')
                }
            }
        }

// Run the code generator
// ----------------------
org.jooq.codegen.GenerationTool.generate(writer.toString())

作为一个初学者,我对这个错误感到不知所措......

【问题讨论】:

    标签: gradle code-generation jooq


    【解决方案1】:

    我必须设置架构

    database() {
    inputSchema('public')
    }
    

    这样就解决了问题

    【讨论】:

      猜你喜欢
      • 2020-07-26
      • 2016-02-19
      • 1970-01-01
      • 2012-07-01
      • 2019-06-22
      • 2014-07-21
      • 2016-04-18
      • 2016-07-22
      相关资源
      最近更新 更多