springboot使用jpa进行数据库操作报错?

按照各种博客和《springboot揭秘》中的介绍配置了项目,就是没法jpa来操作数据库,

报错信息

我就是写了个最简单的demo,继承了Repository的接口就是找不到,报错如下:

***************************

APPLICATION FAILED TO START

***************************

Description:

Field personDao in com.llh.demo.controller.TestController required a bean of type 'com.llh.demo.dao.PersonDao' that could not be found.

Action:

Consider defining a bean of type 'com.llh.demo.dao.PersonDao' in your configuration.

Process finished with exit code 1

代码信息

项目结构

项目结构

pom.xml里的依赖如下

<dependencies>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<!-- MYSQL -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

</dependency>

<!-- Spring Boot JPA -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

<scope>test</scope>

</dependency>

</dependencies>

实体类如下

@Entity

public class Person {

@Id

@GeneratedValue

private Long id;

private String name;

public Person() {

}

public Person(String name) {

this.name = name;

}

public Long getId() {

return id;

}

public void setId(Long id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

Repository接口

@Repository()

public interface PersonDao extends CrudRepository<Person,Long> {

}

controller

@RestController

public class TestController {

@Autowired

PersonDao personDao;

@RequestMapping("/test")

public String test(){

personDao.save(new Person("kljdfs"));

personDao.save(new Person("sdklj"));

return "kdsl";

}

}

启动类

@SpringBootApplication

@ComponentScan(basePackages = {"com.llh.demo","com.llh.demo.dao"})

public class DemoApplication {

public static void main(String[] args) {

SpringApplication.run(DemoApplication.class, args);

}

}

application.properties配置

spring.datasource.url=jdbc:mysql:////test?useUnicode=true&characterEncoding=UTF-8

spring.datasource.username=root

spring.datasource.password=root

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.jpa.hibernate.ddl-auto=update

spring.jpa.show-sql=true

spring.jackson.serialization.indent_output=true

回答:

在启动类上加上了@EnableJpaRepositories(basePackages = "com.llh.dao")注解就不报这个错了。但引发了另一个错误。

事实证明,这些奇怪的问题是可以通过删库来解决的。
把maven仓库的位置改到另一个空文件夹里,让maven自己去下jar包,就可以解决这些劳什子问题了。

总结下来就是,问题太奇怪可以试试删库,没什么是删库解决不了的问题,如果有,那就再装次系统。

回答:

@Repository 不是 @Repository()

另外,要 extends JPA 不是要用 extends JpaRepository<Person, Long> 吗?

Person应该是database的 structure 对吧,应该要有@Column,@Table 才对啊

Person class也要implements Serializable

回答:

添加以下代码重启试试

@SpringBootApplication

@ComponentScan(basePackages = {"com.llh.demo","com.llh.demo.dao"})

@ServletComponentScan // 扫描使用注解方式的servlet

public class DemoApplication {

public static void main(String[] args) {

SpringApplication.run(DemoApplication.class, args);

}

}

以上是 springboot使用jpa进行数据库操作报错? 的全部内容, 来源链接: utcz.com/a/167371.html

回到顶部