Spring boot 带H2和Data.sql的Spring引导数据JPA-未找到表

Spring boot 带H2和Data.sql的Spring引导数据JPA-未找到表,spring-boot,spring-data-jpa,h2,Spring Boot,Spring Data Jpa,H2,我有一个SpringBoot2.5.0项目。我正在使用SpringDataJap和内存中的h2数据库。我想在启动时用data.sql文件填充数据,但我得到了一个table not found异常。如果删除data.sql文件,我可以看到实体的表会自动创建。但是如果我包含data.sql文件,我会得到一个错误,说该表不存在。可能是我的sql语法错误,我错误配置了h2数据库 application.yml data.sql BusinessSummary.java实体 BusinessSummary

我有一个SpringBoot2.5.0项目。我正在使用SpringDataJap和内存中的h2数据库。我想在启动时用data.sql文件填充数据,但我得到了一个table not found异常。如果删除data.sql文件,我可以看到实体的表会自动创建。但是如果我包含data.sql文件,我会得到一个错误,说该表不存在。可能是我的sql语法错误,我错误配置了h2数据库

application.yml

data.sql

BusinessSummary.java实体

BusinessSummaryRepository.java

默认情况下,data.sql脚本现在在运行Hibernate之前运行 初始化。这将调整基于脚本的基本脚本的行为 使用Flyway和Liquibase进行初始化。如果你想用 data.sql要填充Hibernate创建的架构,请设置 spring.jpa.defer-datasource-initialization为true。混合时 不建议使用数据库初始化技术,这将 还允许您使用schema.sql脚本在 Hibernate在通过data.sql填充架构之前创建了架构

您必须将spring.jpa.defer-datasource-initialization转换为yml

默认情况下,data.sql脚本现在在运行Hibernate之前运行 初始化。这将调整基于脚本的基本脚本的行为 使用Flyway和Liquibase进行初始化。如果你想用 data.sql要填充Hibernate创建的架构,请设置 spring.jpa.defer-datasource-initialization为true。混合时 不建议使用数据库初始化技术,这将 还允许您使用schema.sql脚本在 Hibernate在通过data.sql填充架构之前创建了架构

您必须将spring.jpa.defer-datasource-initialization转换为yml

spring:
  datasource:
    url: jdbc:h2:mem:test
    driverClassName: org.h2.Driver
    username: sa
    password: sa
  jpa:
    database-platform: org.hibernate.dialect.H2Dialect

debug: true  
INSERT INTO BUSINESS_SUMMARY VALUES (1, "ALM470", "B48", 3);
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
@Entity
public class BusinessSummary {

    @Id
    private Long id;
    private String businessId;
    private String businessDomainId;
    private Integer cityCode;
}
@Repository
public interface BusinessSummaryRepository extends JpaRepository<BusinessSummary, Long> {
}
Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "BUSINESS_SUMMARY" not found; SQL statement:
INSERT INTO BUSINESS_SUMMARY VALUES(1, "ALM470", "B48", 3) [42102-200]