我的gradle.build(使用nu.studer.jooq插件)
jooq {
MyProject(sourceSets.main) {
generator {
database {
name = 'org.jooq.meta.extensions.ddl.DDLDatabase'
properties {
property {
key = 'scripts'
value = 'src/main/resources/database.sql'
}
}
inputSchema = ''
outputSchema = 'something'
// schemata {
// schema {
// inputSchema = "" // I've tried this too
// outputSchema = 'something'
// }
// }
forcedTypes {
forcedType {
name = 'varchar'
expression = '.*'
types = 'JSONB?'
}
forcedType {
name = 'varchar'
expression = '.*'
types = 'INET'
}
}
}
generate {
relations = true
springAnnotations = true
deprecated = false
fluentSetters = true
// ...
}
target {
packageName = 'com.springforum'
}
}
}
}
在构建过程中,它可以很好地生成模式,但是即使我设置了outputSchema(我尝试使用空字符串和非空字符串),它仍将PUBLIC
模式用于输出)
更新:仅当inputSchema
为空时,才会出现问题,我尝试了另一种具有模式的sql脚本,它可以按预期工作
答案 0 :(得分:2)
这是一个已知问题,其原因是,DDLDatabase
在后台使用H2内存数据库来模拟正在运行的SQL脚本,然后对H2数据库进行反向工程。默认情况下,在H2(和其他一些数据库)中,所有内容都以PUBLIC
模式进行。问题在这里:#7650
当前(从jOOQ 3.11开始),我建议您要么在DDL脚本中明确指定架构,要么使用inputSchema = "PUBLIC"
,了解以上内容。
在jOOQ 3.12中,此问题已通过#7759解决。可以指定不合格架构对象的行为:
<!-- The default schema for unqualified objects:
- public: all unqualified objects are located in the PUBLIC (upper case) schema
- none: all unqualified objects are located in the default schema (default)
This configuration can be overridden with the schema mapping feature -->
<property>
<key>unqualifiedSchema</key>
<value>none</value>
</property>