部署Spring Boot到Tomcat9时JPA实体未被识别的问题排查
Not a managed type异常的解决提示 实体类扫描范围遗漏
检查启动类的@SpringBootApplication或@EntityScan注解,确认是否覆盖了com.michelin.uniformidad.model.tablasove包。本地默认扫描启动类所在包及其子包,但Tomcat部署时可能因打包结构或配置差异导致扫描范围缺失。若实体类包不在启动类层级下,需显式添加:@EntityScan(basePackages = "com.michelin.uniformidad.model.tablasove")JPA实体管理配置缺失
若自定义了DataSource,需确保LocalContainerEntityManagerFactoryBean指定了实体类扫描路径:entityManagerFactoryBean.setPackagesToScan("com.michelin.uniformidad.model.tablasove");避免因数据源配置未关联实体扫描,导致JPA无法识别该类。
War包打包问题
确认项目打包方式为war,且pom.xml正确排除内置Tomcat:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>检查war包结构,确保
CalendarioTurnosEntity.class存在于WEB-INF/classes/com/michelin/uniformidad/model/tablasove路径下,避免打包时遗漏类文件。类加载器冲突
Tomcat类加载机制与内置Tomcat不同,排查WEB-INF/lib下是否存在多版本的hibernate-core或spring-data-jpa依赖,重复依赖会导致类加载异常。必要时可在启动类中显式指定类加载器。实体类注解正确性
确认CalendarioTurnosEntity类正确添加@Entity、@Table注解,且导入的是对应Spring Boot版本的JPA包(如javax.persistence.Entity或jakarta.persistence.Entity),同时确保类提供公共无参构造方法。
内容的提问来源于stack exchange,提问作者Pabs

