播种初始数据 - 使用 data.sql 的 Spring Boot
Posted
技术标签:
【中文标题】播种初始数据 - 使用 data.sql 的 Spring Boot【英文标题】:Seeding Initial Data - Spring Boot with data.sql 【发布时间】:2021-09-29 17:37:41 【问题描述】:data.sql 在创建 JPA 实体之前执行,它会产生找不到表的错误。有人可以帮我吗?我在此链接Spring Boot - Loading Initial Data 中看到了相同的问题,但问题没有得到解答。
【问题讨论】:
能否添加错误日志和应用程序启动时正在执行的代码? 【参考方案1】:我相信这是自 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 点。
【讨论】:
谢谢。我困惑了两天谢谢。以上是关于播种初始数据 - 使用 data.sql 的 Spring Boot的主要内容,如果未能解决你的问题,请参考以下文章
iCloud、Core Data 和副本以及如何播种初始数据?
在不使用 React.createClass 的情况下使用 props 在 react 中播种初始状态