java为什么springbootstarterdatajpa 2.5.0不能因“未找到表”而初始化数据?
我有两个项目使用相同的H2配置:
datasource:
platform: h2
url: jdbc:h2:mem:db;INIT=CREATE SCHEMA IF NOT EXISTS aso_security_db\;SET SCHEMA aso_security_db;
driverClassName: org.h2.Driver
username: sa
password: sa
initialize: true
data: classpath:sql/aso_security_db_init_data.sql
第一个项目使用了spring-boot-starter-data-jpa 1.5.8.RELEASE
,它可以成功初始化数据。
但是使用的第二个spring-boot-starter-data-jpa 2.5.0
无法初始化数据:
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "TBL_USER" not found; SQL statement:
INSERT INTO tbl_user ...
跟踪日志,我看到initdatasql是在生成db结构之前运行的。 春天队!请帮助解决此问题,为世界各地的许多Spring成员节省时间
# 1 楼答案
在Spring Boot 2.5.0中,您必须在属性
spring.jpa.defer-datasource-initialization=true
中进行配置。通过这种配置,数据源初始化将能够构建由Hibernate执行的模式。你可以阅读更多关于这个变化的信息