2016-04-21 27 views
6

Ho entrambe le migrazioni basate su SQL e Java. Sto cercando di utilizzare il hook di callback Flyway per fare qualcos'altro subito dopo la convalida, ma non sta recuperando questa richiamata. Dal documentation, sembra che sia semplice come il seguente.flyway 4.0 callback java base dopoValidate che non cattura il gancio

Qui è la mia struttura dei file:

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

mio callback:

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

Il mio pensiero è che una volta che la migrazione è fatto, flyway avrebbe richiamata in questo metodo. Non ero sicuro di cosa mi sto perdendo?

+2

Hai registrato la richiamata in flyway? Nelle migrazioni basate su Java, dovrebbe essere fatto con il metodo flyway.setCallbacks (FlywayCallback ... callbacks). – merz

+0

Non penso, ho pensato che fosse stato fatto automaticamente con il nuovo aggiornamento, quindi suppongo che dovrei impostarlo prima di fare flyway.migrate() – AirWick219

+0

Come si eseguono le migrazioni? Per quanto mi riguarda, il modo giusto è farlo - init flyway -> setCallbacks -> validate -> migrate. C'è qualcosa che ho perso? – merz

risposta

3

ho solo bisogno di registrare la chiamata durante l'inizializzazione flyway. Ecco cosa ho fatto. Dopo di che. funziona come previsto

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

flyway.setValidateOnMigrate(true); 

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

Nel caso ciò sia utile. Stavo cercando come configurare Flyway per lavorare con i callback Java usando Maven. Devi registrare i tuoi corsi di callback con Flyway (usando Flyway con Java puro useresti setCallbacks).

In Maven questo sembra qualcosa di simile:

<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>