SpringBoot 整合JPA 出现 Error creating bean with name 'userRepository':Not a managed type 问题分析和解决方案

日志信息:


  
  
  1. Caused by:
  2. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Invocation of init method failed;
  3. nested exception is java.lang.IllegalArgumentException: Not a managed type: class com.heima.domain.User

bean注入失败,简单来说就是在加载SpringBoot 的启动类时JPA的实体类找不到,没有被扫描到。导致这样的情况有以下几种可能。

 1、实体类上缺少@Entity注解---在实体类上加上注解即可


  
  
  1. @Entity
  2. public class User {
  3. // 主键
  4. @Id
  5. @GeneratedValue(strategy = GenerationType.IDENTITY)
  6. private Long id;

 2、 没有按照SpringBoot的约定,默认扫描(SpringBootApplication.java 启动类相对的兄弟包及其子包)

 解决方案

 2.1  将SpringBootApplication.java(启动类)放置到更高层级的包,使得项目结构符合SpringBoot约定扫描的规则

 2.2  在启动类中添加要扫描的包

          2.2.1        @ComponentScan(basePackages = "com.boot.demo.xxx.*.*")

                          用于扫描@Controller @Service

          2.2.2        @EnableJpaRepositories(basePackages = "com.boot.demo.xxx.*.dao") 

                          用于扫描Dao @Repository

         2.2.3        @EntityScan("com.boot.demo.xxx.*.*")

                           用于扫描JPA实体类 @Entity


  
  
  1. @SpringBootApplication
  2. @EntityScan( "com.heima.domain")
  3. public class SpringbootJpaApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(SpringbootJpaApplication.class, args);
  6. }
  7. }
发布了244 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_44813090/article/details/105268434
今日推荐