播种初始数据 - 使用 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.sqldata.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的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot:播种数据库的正确方法是啥?

iCloud、Core Data 和副本以及如何播种初始数据?

在不使用 React.createClass 的情况下使用 props 在 react 中播种初始状态

在 Entity Framework 7 RC 1 和 ASP.NET MVC 6 中播种初始数据 [重复]

为开发播种数据库

Spring Boot 不加载数据以使用 data.sql 初始化数据库