springboot中关于自动建表,无法更新字段的问题
短信预约 -IT技能 免费直播动态提醒
关于自动建表,无法更新字段问题
Springboot中的配置
jpa:
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
database: MYSQL
show-sql: true
properties:
hibernate.id.new_generator_mappings: true
hibernate.cache.use_second_level_cache: false
hibernate.cache.use_query_cache: false
hibernate.generate_statistics: false
hibernate.hbm2ddl.auto: create # 自动生成建表语句
hibernate:
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl # 取消驼峰式命名
hibernate.hbm2ddl.auto: create # 自动生成建表语句
除了create配置,还有以下几种
create
会自动建表,全部的Model都会新建表create-drop
会新建表,但会以及SessionFactory自动删除。update
会自动建表,已存在的表无法更新,只会新增新添加的Model,生成表,所以这个注解无法更新已存在的表的字段属性。validate
会对Model和数据库表进行校验,字段属性不一致时,会报错none,不自动建表,只基于Model的@entity和@Table映射数据库的表(字段可以不对应)
springboot jpa未自动建表问题记录
检查pom是否正确引入对应模块
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
检查application文件配置是否存在错误
spring:
datasource:
url: jdbc:mysql://localhost:3306/dbdbd?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: *
password: *
driver-class-name: com.mysql.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
database: mysql
show-sql: true
- 检查实体类是否加入@Entity注解
- 检查项目目录结构,实体类是否在启动类所在包或子包目录下
- 若不在,启动类上是否加入 @EntityScan("****") 注解
检查过后,全都没毛病,项目正常启动,无报错,但是可视化工具 navicat 中并没有生成对应的表,百思不得其解,也黔驴技穷了。后来抱着试一试的想法,在mysql安装目录bin 下 ,命令行查看数据库表,发现对应的表其实已经建立成功,只是navicat没有显示出来。
然后就可以愉快的继续啦~
至于为什么navicat中没有显示建好的表,可能小猫猫坏掉了吧。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341