【发布时间】:2021-09-29 17:37:41
【问题描述】:
data.sql 在创建 JPA 实体之前执行,它会产生找不到表的错误。有人可以帮我吗?我在此链接Spring Boot - Loading Initial Data 中看到了相同的问题,但问题没有得到解答。
【问题讨论】:
-
能否添加错误日志和应用程序启动时正在执行的代码?
标签: java sql spring-boot hibernate
data.sql 在创建 JPA 实体之前执行,它会产生找不到表的错误。有人可以帮我吗?我在此链接Spring Boot - Loading Initial Data 中看到了相同的问题,但问题没有得到解答。
【问题讨论】:
标签: java sql spring-boot hibernate
我相信这是自 2.5 版以来 Springboot 的正常且需要的行为。这背后的想法是纯 SQL(使用 schema.sql 和 data.sql)和基于 JPA 的数据库创建技术是数据库初始化的两种不同方法。
默认情况下,框架会断言只使用一个并优先使用基于 SQL 的。初始化将按此顺序进行:
schema.sql 以创建和操作数据库结构 (DDL)data.sql 填充数据库 (DML)EntityManagerFactory
要实现您想要的行为,您需要告诉他将 JPA 优先于纯 SQL。这可以通过在您的配置中设置来完成:
spring.jpa.defer-datasource-initialization=true
更多详细信息请参阅official documentation,特别是第 9.3 点。
【讨论】: