有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    在Spring Boot 2.5.0中,您必须在属性spring.jpa.defer-datasource-initialization=true中进行配置。通过这种配置,数据源初始化将能够构建由Hibernate执行的模式。你可以阅读更多关于这个变化的信息