今天在进行项目开发的时候,使用JPA进行数据库的创建,在实体类创建成功application.yml文件配置好的情况下,运行项目之后没有报任何错误,但是对应的数据库中没有生成实体类对应的表。
application.yml配置如下
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/blog?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: 277171
jpa:
hibernate:
ddl-auto: update
show-sql: true
database: mysql
logging:
level:
root: info
com.mzc: debug
file:
path: log/myblog-dev.log
实体类的创建大致如下
package com.mzc.po;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
/**
* @author mazhicheng
* @date 2020/5/9 - 10:14
*/
@Entity
@Table(name = "t_type")
public class Type {
@Id
@GeneratedValue
private Long id;
private String name;
@OneToMany(mappedBy = "type")
private List<Blog> blogs=new ArrayList<>();
public Type() {
}
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;
}
public List<Blog> getBlogs() {
return blogs;
}
public void setBlogs(List<Blog> blogs) {
this.blogs = blogs;
}
@Override
public String toString() {
return "Type{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
包结构的包裹层次如下(确保了数据库实体类的包(po包)在启动文件所在包(com.mzc)下)
最终问题
最后,在折腾可差不多一天之后,终于找到了问题,问题不在application.yml中,也不再实体类的编写中,确实在启动类中
package com.mzc;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
//(exclude={DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
@SpringBootApplication
public class MyblogApplication {
public static void main(String[] args) {
SpringApplication.run(MyblogApplication.class, args);
}
}
(exclude={DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})是@SpringBootApplication注解括号中的内容,之所以根据实体类自动创建数据表不成功就是因为加上了它。
出现问题原因:
pom.xml中配置了有关jpa后如果没有写数据库创建的实体类,就会提示@SpringBootApplication注解之后加**(exclude={DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})**,但是在我之后写项目创建了实体类之后忘了把这个去掉,然后就gg了。它就把jpa创建数据表给屏蔽了
最后把这个去了,重新编译运行就ok了,控制台输出有关Hibernate的信息表示数据表创建成功!!
还是要感谢交流群中的大佬,做过的人总是有经验,会让你少走很多弯路,感谢大佬们!!!嘻嘻嘻