【发布时间】: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