Spring Boot升级替换javax.persistence为jakarta.persistence遇JPA报错
解决Spring Boot 3.x升级后JPA校验报错问题
以下是针对报错Class ".." is listed in the persistence.xml file, but is not annotated的具体解决步骤:
更新persistence.xml的命名空间与版本
将原有persistence.xml的头部替换为Jakarta EE 9+对应的命名空间,确保工具能识别Jakarta注解:<persistence xmlns="https://jakarta.ee/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd" version="3.0"> <persistence-unit name="default" transaction-type="RESOURCE_LOCAL"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <class>model.MyData</class> <class>model.MyDataError</class> <class>model.StoredProcedureResultBean</class> </persistence-unit> </persistence>升级Eclipse JPA工具与项目Facet版本
- 确保使用的Eclipse版本为2022-06及以上(该版本开始全面支持Jakarta EE 9+)
- 右键项目 → 属性 → Project Facets,找到JPA项,将版本修改为
3.0(对应Jakarta Persistence 3.0规范)
确认依赖版本兼容性
检查项目中JPA相关依赖(如EclipseLink)的版本是否支持Jakarta:- EclipseLink需使用3.0.x及以上版本,Spring Boot 3.x的starter默认已适配,但如果手动引入依赖,需确保版本正确
- 所有
javax.persistence.*相关依赖需完全替换为jakarta.persistence.*
清理项目缓存并重启Eclipse
执行Project → Clean清理项目,然后重启Eclipse,清除旧的校验缓存
内容的提问来源于stack exchange,提问作者gene b.
相关产品推荐
相关产品推荐

