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

彼得·彭佐夫

我想将此Spring属性文件用于数据库配置。

spring.jmx.enabled=false
spring.datasource.jndi-name=java:/global/production
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDBDialect
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = update
request.limit=300000
spring.flyway.baselineOnMigrate = true
spring.flyway.locations=classpath:/db/migration

该代码运行良好,但不幸的是,在删除所有表后数据库为空时,由于首先执行迁移脚本,所以我收到SQL错误。

如何首先配置JPA以创建表,然后配置Flyway以执行迁移脚本?

戈兰·马齐德·萨吉布

Flyway迁移在休眠执行之前运行。您可以通过查看启动顺序来实现。为此,您需要添加以下配置类:

import org.flywaydb.core.Flyway;
import 
org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;

@Configuration
public class MigrationConfiguration {


/**
 * Override default flyway initializer to do nothing
 */
@Bean
FlywayMigrationInitializer flywayInitializer(Flyway flyway) {
    return new FlywayMigrationInitializer(flyway, (f) ->{} );
}


/**
 * Create a second flyway initializer to run after jpa has created the schema
 */
@Bean
@DependsOn("entityManagerFactory")
FlywayMigrationInitializer delayedFlywayInitializer(Flyway flyway) {
    return new FlywayMigrationInitializer(flyway, null);
}


}

查看答案,您将获得详细信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章