hibernate - 使用hibernate-jpamodelgen优化gradle中的 hibernate 元模型生成

标签 hibernate jpa gradle metamodel incremental-build

软件包Hibernate-Jpamodelgen是在JPA @Entity类上运行的注释处理器/代码生成器。使用JPA标准查询的应用程序中经常需要它。

Gradle提供了“增量编译”模式,但是必须更新插件以支持该模式。从5.4.2.Final版本开始,尚未对JpaModelGen进行更新以提供该支持,这意味着在执行:compile任务时,将重新编译项目中的所有源文件。

我们所有的@Entity类都位于一个包中,位于根目录下5级。

我们正在寻找一种对应用程序进行分区的方法,以使@Entities为
由JpaModelGen正确扫描,但是该应用程序的其余部分仍然能够支持增量编译/构建。

环境:

------------------------------------------------------------
Gradle 5.4
------------------------------------------------------------

Build time:   2019-04-16 02:44:16 UTC

Kotlin:       1.3.21
Groovy:       2.5.4
Ant:          Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM:          11.0.1 (Oracle Corporation 11.0.1+13)
OS:           Windows 10 10.0 amd64

gradle.build文件除外:
annotationProcessor "org.springframework.boot:spring-boot-configuration-processor:2.1.4.RELEASE"

compileOnly "org.hibernate:hibernate-jpamodelgen:5.4.2.Final"
testCompileOnly "org.hibernate:hibernate-jpamodelgen:5.4.2.Final"
gradle --info classes输出摘录:
Full recompilation is required because org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor is not incremental. 

更新:我们变得更加悲观,因为这样的分区对于我们的应用程序将是成功的,因为实体引用了模型包之外的对象,因此无法对其进行编译,并且如果不访问其余应用程序类就无法生成代码。

最终,解决方案似乎是更新jpa模型生成器以支持gradle增量模式。

最佳答案

小而快速的答复文件。
我面临着完全相同的问题,但是事实证明,在jpamodelgen中支持gradle增量编译器的修复非常简单。

http://hibernate.atlassian.net/browse/HHH-13390问题现已解决,此修复程序将包含在即将发布的5.4.11中

关于hibernate - 使用hibernate-jpamodelgen优化gradle中的 hibernate 元模型生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55977570/

相关文章:

java spring mvc 使用hibernate做update

java - 如何管理多对一jpa以使用DTO保存和查找数据

android - 在ANDROID STUDIO中显示错误

node.js - ionic运行失败,但出现异常> org/bouncycaSTLe/jce/provider/BouncyCaSTLeProvider

java - Hibernate 执行多个相同的查询

java - 使用延迟加载时 Hibernate List 为空,但在热切加载时它有结果

java - 调用与 EntityManager 合并时的 PersistenceException 和 IllegalArgumentException

java.lang.IllegalArgumentException : The attribute [A] from the managed type [T] is not present 异常

java - JPA:主键的重复条目

maven - gradle init不适用于pom.xml中的某些插件