hibernate-core 6.0.2为何移除javax.persistence-api依赖
依赖移除原因
这不是版本依赖缺失的bug,是Hibernate 6.x版本的官方主动调整:
- Hibernate 6.0是首个完全适配Jakarta Persistence 3.0规范的正式大版本,由于Oracle将Java EE商标所有权移交Eclipse基金会后,Jakarta EE 9及以上版本所有原
javax.*命名空间的企业级API全部统一重命名为jakarta.*,因此Hibernate 6.x直接移除了旧的javax.persistence-api依赖,替换为适配新命名空间的jakarta.persistence-api。 - 5.6.x是Hibernate最后一个兼容旧Java EE javax.persistence命名空间的维护分支,因此该版本仍然保留了对javax.persistence-api的传递依赖。
升级注意事项
- 不要手动添加javax.persistence-api依赖:Hibernate 6.x内部所有类、方法签名都已经完全适配jakarta命名空间,强行引入旧的javax.persistence-api会触发类冲突、方法找不到等运行时异常,无法正常工作。
- 正确适配方式:将代码中所有
javax.persistence开头的导入语句全部替换为jakarta.persistence即可,例如将import javax.persistence.Entity;修改为import jakarta.persistence.Entity;。Hibernate-core 6.0.2.Final已经默认传递引入了对应版本的jakarta.persistence-api,无需额外手动添加持久化相关API依赖。 - 如果项目存在大量强依赖javax.persistence命名空间的历史组件、无法快速完成包名替换,建议继续使用Hibernate 5.6.x分支版本,不要贸然升级到6.x系列。
内容的提问来源于stack exchange,提问作者Raymond Domingo
相关产品推荐
相关产品推荐

