Hibernate jpamodelgen 无法生成依赖库实体元模型的问题如何解决?
Hibernate JPA元模型继承第三方父类编译报错解决方案
方案1:关闭元模型继承特性(匹配Eclipselink原有行为)
Hibernate从5.4版本开始提供关闭元模型类继承的配置参数,开启后生成的当前项目实体元模型不会继承父类的元模型类,完全符合你之前使用Eclipselink的生成效果。
Maven项目配置
在pom.xml的maven-compiler-plugin配置中新增编译器参数:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <annotationProcessorPaths> <path> <groupId>org.hibernate</groupId> <artifactId>hibernate-jpamodelgen</artifactId> <version>替换为你的Hibernate实际版本号</version> </path> </annotationProcessorPaths> <compilerArgs> <arg>-Ahibernate.metamodel.generation.disable_inheritance=true</arg> </compilerArgs> </configuration> </plugin>
Gradle项目配置
在build.gradle中新增对应配置:
dependencies { annotationProcessor 'org.hibernate:hibernate-jpamodelgen:替换为你的Hibernate实际版本号' } compileJava { options.compilerArgs += '-Ahibernate.metamodel.generation.disable_inheritance=true' }
方案2:强制生成第三方父类的元模型
如果你后续需要用到父类中字段的元模型属性,可以配置生成器扫描第三方父类所在的包,自动生成对应的元模型类。
在编译器参数中新增包扫描配置即可,将com.xxx替换为AbstractEntity实际所在的包名,多个包名用英文逗号分隔:
-Ahibernate.metamodel.generation.packages=com.xxx
备选临时方案
如果上述配置不生效,可以在当前项目的Java源码目录下,新建和AbstractEntity同包名的路径,手动创建空的AbstractEntity_类即可解决编译报错:
import javax.annotation.Generated; @Generated(value = "org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor") public abstract class AbstractEntity_ { }
内容的提问来源于stack exchange,提问作者Ashref Nasri
相关产品推荐
相关产品推荐

