我试图用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位缺少一个没有名字的列 name:对象jsonb_exists_any包含一个没有的列 名称在位置2缺少名称:对象jsonb_ge拥有一个 位置1没有名称的列缺少名称:对象 jsonb_ge在位置2处保留一个没有名称的列缺少名称
:对象jsonb_gt在位置1缺少一个没有名称的列 name:Object jsonb_gt包含一个没有名称的列 位置2缺少名称:对象jsonb_hash包含一列 在位置1没有名称缺少名称:对象 jsonb_in在第1位保留一个没有名字的列缺少名称
:对象jsonb_le在位置1缺少一个没有名称的列 name:Object jsonb_le包含一个没有名称的列 位置2缺少名称:对象jsonb_lt包含一列 在位置1没有名称缺少名称:对象 jsonb_lt在位置2处保留一个没有名称的列缺少名称
:对象jsonb_ne在位置1缺少一个没有名称的列 name:Object 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
)
)
}
的pagila
答案 0 :(得分:3)
对于Postgres,你还必须指定输入模式,所以它是:
generator() {
database() {
name { mkp.yield( 'org.jooq.util.postgres.PostgresDatabase' ) }
inputSchema("public")
}
[..]