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>
实体类如下
@Entitypublic 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
类
@RestControllerpublic 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-8spring.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