如何让hbm2java生成依赖jakarta.persistence的Entity类?
解决hbm2java生成Entity导入
jakarta.persistence而非javax.persistence的问题 核心原因
你当前使用的hibernate-tools-maven-plugin是针对JPA规范的javax版本,要生成Jakarta EE规范的Entity,必须切换到Jakarta专属的Hibernate Tools插件版本,同时调整依赖配置。
具体修改方案
1. 替换Maven插件为Jakarta版本
将原插件的artifactId改为Jakarta专属版本,并引入适配的Hibernate Core依赖:
<plugin> <groupId>org.hibernate</groupId> <!-- 替换为Jakarta专属插件 --> <artifactId>hibernate-tools-maven-plugin-jakarta</artifactId> <version>5.6.15.Final</version> <executions> <execution> <phase>generate-sources</phase> <goals> <goal>hbm2java</goal> </goals> </execution> </executions> <configuration> <packageName>PACKAGE_NAME</packageName> <outputDirectory>OUTPUT_DIR</outputDirectory> <ejb3>true</ejb3> <!-- 可选:强制指定Jakarta模板路径,确保生成逻辑正确 --> <templatePath>/org/hibernate/tool/hbm2x/templates/ejb3/jakarta</templatePath> </configuration> <dependencies> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>8.0.32</version> </dependency> <!-- 引入Jakarta版本的Hibernate Core,保证插件依赖正确 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core-jakarta</artifactId> <version>5.6.15.Final</version> </dependency> </dependencies> </plugin>
2. 调整hibernate.properties(可选优化)
若需要适配Jakarta规范的最新方言,可替换原方言配置:
hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
为什么之前的尝试无效
你引入的hibernate-jpamodelgen-jakarta是用于JPA静态元模型生成的工具,和hbm2java生成实体类的逻辑完全无关,因此无法改变实体类的导入包路径。
验证方法
执行mvn generate-sources命令后,检查生成的Entity类,导入语句应从import javax.persistence.*;变为import jakarta.persistence.*;。
内容的提问来源于stack exchange,提问作者Lawrence Tierney
相关产品推荐
相关产品推荐

