繁体   English   中英

如何在 gradle、intellij IDEA 中使用 JPA 元模型?

[英]How to use JPA metamodel with gradle, intellij IDEA?

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

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

我猜这很简单,但现在看来这可能是错误的。 我怎样才能使用它?

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 或 Hibernate 5.4+,则可能不需要annotationProcessor("javax.xml.bind:jaxb-api")

前几天我使用 scalified 元模型 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/generated 下构建元模式文件,它们可以在您的代码中使用。 我还必须更改 IntelliJ 设置,因为 IntelliJ 的自动构建排除了一些可能长时间运行的 Gradle 任务。 有关更多详细信息,请参阅使用 IntelliJ IDEAhttps://youtrack.jetbrains.com/issue/IDEA-175165 在项目构建中自动运行 Gradle 任务

为了克服这个问题,我更改了这个设置:Preferences->Build/Execution/Deployment->Gradle->Runner->Delegate IDE build/run actions to Gradle。 另一种方法是根据需要手动运行 metamodelCompile gradle 任务。 如果您不经常更改实体,这会减少一点重建时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM