2016-04-21 13 views
6

私はSQLベースとJavaベースの両方の移行を行っています。私は、Flywayのコールバックフックを使用して、検証が完了した直後に何か他のことをしようとしていますが、このコールバックをキャッチしていません。 documentationから、次のように簡単なようです。ここでflyway 4.0 JavaベースのコールバックafterValidateがフックをキャッチしない

は、私のファイル構造である:

-java 
--db 
---migrations 
----V1__apple <----java based 
--FruitShopFlywayCallback.java <---- Callback class 
-resources 
--migrations 
--- V1__orange.sql <----sql based 

は私のコールバック:

public class FruitShopFlywayCallback extends BaseFlywayCallback { 
    @Override 
    public void afterValidate(Connection dataConnection) { 
     System.out.println("it worksssssssss"); 
    } 
} 

私の考えは、移行が完了すると、フライウェイは、このメソッドにコールバックするつもりだったということでした。私は何が欠けているのか分からなかった?

+2

あなたのコールバックをflywayに登録しましたか? Javaベースの移行では、flyway.setCallbacks(FlywayCallback ...コールバック)メソッドで行う必要があります。 – merz

+0

私はそうは思わない、私はそれが自動的に新しいアップデートで行われたと思ったので、私はflyway.migrate()を行う前にそれを設定する必要があります推測している – AirWick219

+0

どのように移行を実行しますか?私にとって、正しい方法は - init flyway - > setCallbacks - > validate - > migrateです。私が逃したものはありますか? – merz

答えて

3

は、Mavenのは、これは、次のようになります。 ここに私がしたことがあります。その後。それは期待どおりに動作します

// Initializing Flyway 
Flyway flyway = new Flyway(); 
flyway.setDataSource(dataSource); 

flyway.setValidateOnMigrate(true); 

// Register call back. 
FruitShopFlywayCallback callback = new FruitShopFlywayCallback(); 
flyway.setCallbacks(callback); 
3

これが役に立つ場合。 Mavenを使ってJavaコールバックを処理するようにFlywayを設定する方法を探していました。 Flywayでコールバッククラスを登録する必要があります(純粋なJavaのFlywayを使用する場合はsetCallbacksを使用します)。私はちょうどフライウェイを初期化するときにコールバックを登録するために必要な

<plugin> 
    <groupId>org.flywaydb</groupId> 
    <artifactId>flyway-maven-plugin</artifactId> 
    <version>${flyway.version}</version> 
    <configuration> 
    <driver>org.hsqldb.jdbcDriver</driver> 
    <url>jdbc:hsqldb:file:${project.build.directory}/db/flyway_sample;shutdown=true</url> 
    <user>SA</user> 
    <callbacks> 
     <callback>example.MyCallback</callback> 
    </callbacks> 
    </configuration> 
</plugin> 
関連する問題