为啥flyway迁移需要JPA依赖才能运行

Posted

技术标签:

【中文标题】为啥flyway迁移需要JPA依赖才能运行【英文标题】:why is JPA dependency needed for flyway migrations to run为什么flyway迁移需要JPA依赖才能运行 【发布时间】:2017-09-17 10:07:57 【问题描述】:

你好, 我是 Spring Boot gradle Project 的新手。我正在尝试使用 Spring Boot 应用程序运行 Flyway 迁移。这就是我在 gradle 中设置依赖项的方式,

首先,我将依赖项添加为, org.springframework.boot:spring-boot-starter-web 。这足以暴露一个终点。

然后我尝试在gradle中添加flyway依赖,org.flywaydb:flyway-core:4.0,它既没有抛出错误也没有运行迁移脚本,直到我添加了依赖org.springframework.boot:spring-boot-starter-data-jpa:1.3.5.RELEASE。在查看了 data-jpa jar 的 pom.xml 之后,我发现这个 jar 的依赖项也有休眠包org.springframework.boot:spring-boot-starter-web。所以我删除了添加的第一个依赖项 jar。但服务启动失败。我的疑问是:

1) 应该添加 JPA 库以运行 flyway 脚本的必要性是什么 2)如果 org.springframework.boot:spring-boot-starter-web 是 jar org.springframework.boot:spring-boot-starter-data-jpa:1.3.5.RELEASE 的依赖项,我为什么要再添加一次

【问题讨论】:

【参考方案1】:

使用 Flyway 自然意味着处理某种数据源,否则在您的项目中添加数据库迁移库有什么意义?

当您添加 Flyway 依赖项时,默认情况下 Spring Boot 会自动将 Flyway 与其数据源自动关联,并在启动时按照 the documentation 调用它。

因此需要一个 JPA 库。

【讨论】:

以上是关于为啥flyway迁移需要JPA依赖才能运行的主要内容,如果未能解决你的问题,请参考以下文章

使用Flyway迁移存储过程

在 flyway 迁移脚本之前执行 JPA 表创建

Spring Data JPA / Flyway 转义双引号

为啥 delete-orphan 需要“全部级联”才能在 JPA/Hibernate 中运行?

如何使用 flyway 跳过特定的迁移?

为啥 flyway 会忽略我的 SQL 迁移文件?