【问题标题】:Tried to generate the code using Jooq using SQL Server but not able to do so尝试使用 SQL Server 使用 Jooq 生成代码,但无法这样做
【发布时间】:2017-06-12 23:27:38
【问题描述】:

已尝试使用 Jooq 在 gradle 中使用 SQL Server 配置生成代码,但无法这样做。但同样的事情在 h2DB 上也能正常工作。 谁能向我解释一下如何在 gradle 中使用 jooq 为 mssql 服务器生成类。

**Here is my gradle code:**

import org.jooq.util.jaxb.*
import org.jooq.util.*

buildscript {
  repositories {
    jcenter()
  }
  dependencies {
    classpath 'com.h2database:h2:1.4.186'   
    classpath 'org.jooq:jooq-codegen:3.9.1' 
    classpath 'com.microsoft.sqlserver:sqljdbc4:4.0' 
   classpath "io.ratpack:ratpack-gradle:0.9.7-SNAPSHOT"
    classpath 'com.github.jengelman.gradle.plugins:shadow:1.0.2'

  }
}
plugins {
  id 'io.ratpack.ratpack-java' version '1.3.3'
}

repositories {
  jcenter()
}

dependencies {
  compile ratpack.dependency('hikari') 
  compile 'com.h2database:h2:1.4.186' 
  compile 'org.jooq:jooq:3.9.1' 
  compile 'com.microsoft.sqlserver:sqljdbc4:4.0' 
  compile "io.ratpack:ratpack-gradle:0.9.7-SNAPSHOT"
  compile 'com.github.jengelman.gradle.plugins:shadow:1.0.2'

}
mainClassName = 'App'

task jooqCodegen {
  doLast {
    String init = "<directory>/init.sql"
    Configuration configuration = new Configuration()
      .withJdbc(new Jdbc()
      .withDriver("com.microsoft.sqlserver.jdbc.SQLServerDriver") 
      .withUrl("jdbc:sqlserver://<server address>;DatabaseName=JOOQ; INIT=RUNSCRIPT FROM '$init'") 
      .withUser("****")
      .withPassword("****")
    )
      .withGenerator(new Generator()
        .withDatabase(new Database()
         .withName("org.jooq.util.sqlserver.SQLServerDatabase")
          .withIncludes(".*")
          .withExcludes("")
          .withInputSchema("dbo")
        )
      .withTarget(new Target()
        .withDirectory("$projectDir/src/main/java") 
        .withPackageName("jooq"))) 
    GenerationTool.generate(configuration)
  }
}

**Note :** Added one create table statement in init.sql file

【问题讨论】:

  • 欢迎来到 Stack Overflow!为了给您一个很好的答案,如果您还没有看过How to Ask,它可能会对我们有所帮助。如果您可以提供minimal reproducible example,它可能也很有用。

标签: java sql gradle jooq


【解决方案1】:

jOOQ 开源版不支持 SQL Server as shown here。为了在 gradle 中使用 jOOQ 专业版,您需要进行以下修改:

buildscript {
  repositories {
    jcenter()
  }
  dependencies {
    classpath 'org.jooq.pro:jooq-codegen:3.9.1' 
    // ...
  }
}
// ...

dependencies {
  compile 'org.jooq.pro:jooq:3.9.1' 
  // ...
}

请注意,Maven groupId 已更改。这些是不同 jOOQ 版本的所有可用 groupId 值:

  • org.jooq 用于开源版(可从 Maven Central 获得)
  • org.jooq.pro 用于商业版(Maven Central 不提供)
  • org.jooq.pro-java-6 用于支持 Java 6 的商业版(Maven Central 不提供)
  • org.jooq.trial 免费试用版(Maven Central 不提供)

【讨论】:

  • 感谢您的帮助!
猜你喜欢
  • 2019-06-22
  • 2016-07-22
  • 2016-06-12
  • 2020-07-26
  • 2016-02-19
  • 2018-03-29
  • 2021-10-28
  • 2015-01-20
  • 1970-01-01
相关资源
最近更新 更多