【问题标题】:Seeding Initial Data - Spring Boot with data.sql播种初始数据 - 使用 data.sql 的 Spring Boot
【发布时间】:2021-09-29 17:37:41
【问题描述】:

data.sql 在创建 JPA 实体之前执行,它会产生找不到表的错误。有人可以帮我吗?我在此链接Spring Boot - Loading Initial Data 中看到了相同的问题,但问题没有得到解答。

【问题讨论】:

  • 能否添加错误日志和应用程序启动时正在执行的代码?

标签: java sql spring-boot hibernate


【解决方案1】:

我相信这是自 2.5 版以来 Springboot 的正常且需要的行为。这背后的想法是纯 SQL(使用 schema.sqldata.sql)和基于 JPA 的数据库创建技术是数据库初始化的两种不同方法。

默认情况下,框架会断言只使用一个并优先使用基于 SQL 的。初始化将按此顺序进行:

  1. 运行 schema.sql 以创建和操作数据库结构 (DDL)
  2. 运行 data.sql 填充数据库 (DML)
  3. 初始化您的EntityManagerFactory

要实现您想要的行为,您需要告诉他将 JPA 优先于纯 SQL。这可以通过在您的配置中设置来完成:

spring.jpa.defer-datasource-initialization=true

更多详细信息请参阅official documentation,特别是第 9.3 点。

【讨论】:

  • 谢谢。我困惑了两天谢谢。
猜你喜欢
  • 2017-12-18
  • 2019-11-29
  • 2020-07-08
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 2021-11-30
  • 2018-02-14
  • 2016-10-13
相关资源
最近更新 更多