簡體   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