Я из мира MySQL, и генерация кода с использованием JOOQ всегда была легкой задачей.Вывод будет хорошо вписываться в мое имя целевого пакета.Теперь у меня есть этот проект, где мне нужно использовать SQL Server 2017 в качестве основной базы данных.Я купил лицензию JOOQ и смог настроить Gradle для работы с ней.Flyway работает как чудо, но по какой-то причине я застрял в процессе генерации кода JOOQ.
Я знаю, что схемы и таблицы MySQL - одно и то же, но не в SQL Server.Все мои таблицы используют DBO в качестве схемы по умолчанию и расположены в корне моего каталога таблиц в базе данных.
Теперь проблема.Когда я запускаю 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"
}