【发布时间】:2019-06-22 00:09:10
【问题描述】:
我来自 MySQL 世界,使用 JOOQ 生成代码一直是一件容易的事。输出很适合我的目标包名称。现在我有这个项目,我需要使用 SQL Server 2017 作为主数据库。我购买了一个 JOOQ 许可证并设法设置 Gradle 来使用它。 Flyway 就像一个魅力,但由于某种原因,我被困在 JOOQ 代码生成过程中。
我知道在 MySQL 中模式和表几乎是一回事,但在 SQL Server 中却不同。我所有的表都使用 DBO 作为其默认架构,并且位于数据库中我的 Tables 目录的根目录中。
现在的问题。当我运行 generateJooqSchemaSource JOOQ 将开始为数据库中的所有表生成代码,包括 [master] 和 [msdb],即使我在连接 URL 中指定了我的数据库名称。代码生成过程应该只针对我指定的数据库。
知道如何解决这个问题吗?
这是我的 gradle 构建文件:
buildscript {
repositories {
mavenLocal()
jcenter()
dependencies {
classpath 'com.microsoft.sqlserver:mssql-jdbc:7.0.0.jre8'
}
}
}
plugins {
id 'java'
id 'eclipse'
id 'idea'
id 'org.springframework.boot' version '2.1.2.RELEASE'
id 'io.spring.dependency-management' version '1.0.6.RELEASE'
id 'nu.studer.jooq' version '3.0.2'
id 'org.flywaydb.flyway' version '5.1.4'
}
group 'org.test.security'
version '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenLocal()
jcenter()
}
dependencyManagement {
imports {
mavenBom 'org.springframework.boot:spring-boot-starter-parent:2.1.2.RELEASE'
}
}
configurations {
developmentOnly
runtimeClasspath {
extendsFrom developmentOnly
}
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-mail'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.flywaydb:flyway-core:5.2.4'
implementation 'org.apache.poi:poi:4.0.1'
implementation 'org.apache.poi:poi-ooxml:4.0.1'
implementation 'com.microsoft.sqlserver:mssql-jdbc:7.0.0.jre8'
implementation 'org.firebirdsql.jdbc:jaybird-jdk17:3.0.5'
implementation 'org.jooq.pro:jooq:3.11.9'
implementation 'org.jooq.pro:jooq-meta:3.11.9'
implementation 'org.jooq.pro:jooq-codegen:3.11.9'
compileOnly 'org.springframework.boot:spring-boot-configuration-processor'
jooqRuntime 'com.microsoft.sqlserver:mssql-jdbc:7.0.0.jre8'
jooqRuntime 'org.firebirdsql.jdbc:jaybird-jdk17:3.0.5'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
jooq {
version = '3.11.9'
edition = 'PRO'
master(sourceSets.main) {
jdbc {
driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=MyDatabase"
user = "sa"
password = "admin123"
}
generator {
database {
name = "org.jooq.meta.sqlserver.SQLServerDatabase"
inputSchema = "dbo"
}
generate {
relations = true
deprecated = false
records = true
immutablePojos = true
fluentSetters = true
}
target {
packageName = 'org.test.security.database.master'
directory = 'target/generated-src'
}
}
}
}
flyway {
url = "jdbc:sqlserver://127.0.0.1:1433;databaseName=MyDatabase"
user = "sa"
password = "admin123"
table = "Schema_History"
}
【问题讨论】:
标签: sql-server gradle jooq