SpringBoot整合JPA使用文件型H2数据库时h2控制台无表问题咨询
问题根因
你贴出的application.yml存在明显的缩进错误,JPA相关配置被错误放在了jackson节点下,导致Spring Boot无法加载JPA/Hibernate配置,自然不会自动创建数据表:
# 错误的缩进示例(你当前的写法) spring: jackson: serialization: fail-on-empty-beans: false deserialization: READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE: true jpa: # 这里错误,jpa不应该是jackson的子节点 ...
修正后的完整配置
将JPA配置调整为和jackson平级,放在spring节点的直接子级即可:
spring: profiles: dev datasource: url: jdbc:h2:file:./h2_db;DB_CLOSE_ON_EXIT=FALSE;AUTO_SERVER=TRUE driver-class-name: org.h2.Driver username: root password: 1 h2: console: enabled: true settings: web-allow-others: true jackson: serialization: fail-on-empty-beans: false deserialization: READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE: true # jpa移到此处,和jackson、datasource同级 jpa: database-platform: org.hibernate.dialect.H2Dialect hibernate: ddl-auto: update properties: hibernate: format_sql: true show_sql: true default_batch_fetch_size: 100
其他排查点
- 登录H2控制台时,JDBC URL必须和配置里的
jdbc:h2:file:./h2_db;DB_CLOSE_ON_EXIT=FALSE;AUTO_SERVER=TRUE完全一致,不要用控制台默认的内存库地址,否则会连接到完全不同的库看不到表 - 确认你的实体类都添加了
@Entity注解,且放在启动类所在包的同级或子包下,否则Spring无法扫描到实体类,也不会自动创建表 - 启动项目后查看控制台SQL输出,确认有没有建表相关的SQL执行日志
内容的提问来源于stack exchange,提问作者CODINNN
相关产品推荐
相关产品推荐

