升级Spring Boot 3后无法找到javax.persistence.NamedStoredProcedureQuery求助
解决Spring Boot 3.0.2升级后JPA存储过程注解找不到的问题
问题原因
Spring Boot 3.x 基于 Jakarta EE 9 规范,而2.7版本基于Java EE,JPA相关API的包路径从 javax.persistence 迁移到了 jakarta.persistence,这直接导致你原有的import语句无法找到对应类。
解决步骤
替换JPA相关的import路径
将实体类中所有javax.persistence开头的import替换为jakarta.persistence:import jakarta.persistence.NamedStoredProcedureQueries; import jakarta.persistence.NamedStoredProcedureQuery; import jakarta.persistence.ParameterMode; import jakarta.persistence.StoredProcedureParameter; import jakarta.persistence.Entity; import jakarta.persistence.Table;确认依赖无需额外调整
Spring Boot 3的spring-boot-starter-data-jpa已经默认引入Jakarta Persistence API,你的parent配置已经是3.0.2版本,这一步不需要额外修改pom.xml。全局检查其他JPA引用
项目中其他使用javax.persistence的地方(比如EntityManager、Query等)也要同步替换为jakarta.persistence,避免出现同类报错。
修改后的实体类示例
@Entity @Table(name = "some_table") @NamedStoredProcedureQueries({ @NamedStoredProcedureQuery(name = "updateproctime", procedureName = "SP1", parameters = { @StoredProcedureParameter(mode = ParameterMode.IN, type = String.class, name = "p_form_name"), @StoredProcedureParameter(mode = ParameterMode.IN, type = String.class, name = "p_office_code"), @StoredProcedureParameter(mode = ParameterMode.IN, type = String.class, name = "p_form_type"), @StoredProcedureParameter(mode = ParameterMode.IN, type = Date.class, name = "p_processing_date"), @StoredProcedureParameter(mode = ParameterMode.IN, type = Date.class, name = "p_effctve_dt") })}) public class SomeEntity implements Serializable { //... }
内容的提问来源于stack exchange,提问作者gene b.
相关产品推荐
相关产品推荐

