Flyway 不支持 JPA和春天. 它基本上按顺序运行您的 SQL(不是 HQL)脚本并跟踪它们。并且做得很好。它与您如何使用数据库以及如何生成升级脚本无关。
不过,还是有希望的。您的持久性提供程序很可能支持更新现有模式(我知道hibernate和eclipselink可以),在启动时运行 ALTER 和 CREATE 语句。迁移 SQL 脚本并不完美,它并不总是有效,但这是一个好的开始。记录这些脚本,收集到 SQL 文件中,清理并用作V_*.sql
提供给 Flyway 的文件。
更新:虽然没有对spring框架的直接支持,但您可以轻松地将其与现有的 Spring 应用程序集成。这种方法被证明适用于生产并且运行良好:
<bean id="flyway" class="com.googlecode.flyway.core.Flyway" init-method="migrate">
<property name="dataSource" ref="..."/>
...
</bean>
奖励:它也适用于 Java 配置(使用 Scala):
@Bean(initMethod = "migrate")
def flyway() = {
val fly = new Flyway()
fly.setDataSource(dataSource)
fly
}