Spring Data Jpa 实体类自动创建数据库表失败解决
先说一下我遇到的这个问题,首先我是通过 maven 创建了一个 spring boot 的工程,引入了 Spring data jpa,结果实体类创建好之后,运行工程却没有在数据库中自动创建数据表。
找了半天发现是一个配置的问题:
hibernate.ddl-auto 节点的配置,这个配置有两种方式去配置,我使用的是通过 properties 文件去配置:
#DataSource Config
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:6033/data_service?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.show-sql= true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.jackson.serialization.indent_output=false
hibernate.hbm2ddl.auto 节点的值有几个 create、create-drop、update、validate、none
create :每次加载 hibernate 会自动创建表,以后启动会覆盖之前的表,所以这个值基本不用,严重会导致的数据的丢失。
create-drop : 每次加载 hibernate 时根据 model 类生成表,但是 sessionFactory 一关闭,表就自动删除,下一次启动会重新创建。
update :加载 hibernate 时根据实体类 model 创建数据库表,这是表名的依据是 @Entity 注解的值或者 @Table 注解的值,sessionFactory 关闭表不会删除,且下一次启动会根据实体 model 更新结构或者有新的实体类会创建新的表。
validate :启动时验证表的结构,不会创建表
none :启动时不做任何操作