如何使用带有gradle,intellij IDEA的JPA元模型?

时间:2018-04-14 09:53:39

标签: spring-boot jpa gradle intellij-idea metamodel

我使用的是java 8,spring boot 2.0.0,spring-data-jpa(spring-boot-starter-data-jpa),gradle,intellij。我一直在尝试使用JPA Metamodel,但很难找到如何配置。

实体类的元模型不仅仅是生成的。

我猜这很简单,但现在看来可能是错的。我怎么用呢?

2 个答案:

答案 0 :(得分:2)

JDK11 / Gradle 5.0 / Hibernate 5.3.7.Final

sourceSets.main.java.srcDirs += "${buildDir}/generated"

compileJava {
  options.annotationProcessorGeneratedSourcesDirectory = file("${buildDir}/generated")
}

dependencies {
  annotationProcessor("javax.xml.bind:jaxb-api")
  annotationProcessor("org.hibernate:hibernate-jpamodelgen")
}

生成的元模型类将在“生成/生成”处生成

如果您使用的是JDK8,则可能不需要annotationProcessor("javax.xml.bind:jaxb-api")

答案 1 :(得分:1)

前几天,我使用缩放的元模型gradle插件(https://plugins.gradle.org/plugin/com.scalified.plugins.gradle.metamodel)进行了此操作。我正在使用Spring Boot 2.0.5,但是我不明白为什么它不能与Spring Boot 2.0.0一起使用。我也在使用Gradle 4.8.1。

下面是我的build.gradle的摘录。

buildscript {
repositories {
   maven {
     url "https://plugins.gradle.org/m2/"
   }
}
dependencies {
  classpath (
      "org.springframework.boot:spring-boot-gradle-plugin:2.0.0",
      "gradle.plugin.com.scalified.plugins.gradle:metamodel:0.0.1");
  }
}

apply plugin: "com.scalified.plugins.gradle.metamodel"

// The plugin will default to the latest version of Hibernate if this is not specified
metamodel {
   hibernateVersion = '5.2.14.Final' // For Spring Boot 2.0.0
   hibernateVersion = '5.2.17.Final' // For Spring Boot 2.0.5
}

这将在src / generate下构建元模态文件,并且可以在您的代码中使用它们。我还必须更改IntelliJ设置,因为IntelliJ的构建自动排除了一些可能长时间运行的Gradle任务。有关更多详细信息,请参见Automatically run Gradle task in project build with IntelliJ IDEAhttps://youtrack.jetbrains.com/issue/IDEA-175165

我更改以克服此设置的方法是:首选项->构建/执行/部署->渐变->运行器->将IDE生成/运行操作委托给Gradle。一种替代方法是根据需要手动运行metamodelCompile gradle任务。如果您不经常更改实体,那将减少一点重建时间。