Ich habe ein Java-Projekt, in dem ich JPA für Persistenz verwende. Nun möchte ich LiquiBase in mein Projekt integrieren, aber ich weiß nicht, wie ich die Reihenfolge ändern kann, in der JPA/Liquibase ausgeführt wird.Liquibase + JPA: Laufauftrag
Zur Klarheit: Bis jetzt sieht mein persistence.xml wie folgt aus:
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
<property name="javax.persistence.jdbc.url" value=.../>
<property name="javax.persistence.jdbc.user" value=.../>
<property name="eclipselink.ddl-generation" value="create-or-extend-tables"/>
ich jetzt zu setzen versucht:
<property name="eclipselink.ddl-generation" value="none"/>
so dass liquibase behandelt alle Datenbank-Zeug.
Aber jetzt, wenn ich meinen Code ausführen, wirft JPA einen Fehler, weil einige Tabellen fehlen, obwohl diese Tabellen von liquibase erstellt werden sollten, was zu der Annahme führt, dass JPA vor liquibase ausgeführt wird.
Wie ändere ich diese Reihenfolge? Bis jetzt ist Liquibase in Code über diese Zeilen ausgeführt:
java.sql.Connection connection = openConnection(); //your openConnection logic here
Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(connection));
Liquibase liquibase = new liquibase.Liquibase("path/to/changelog.xml", new ClassLoaderResourceAccessor(), database);
liquibase.update(new Contexts(), new LabelExpression());
Ich habe irgendwo gelesen, dass diese über Liquibase Servlet Zuhörer erreicht werden könnten, aber das erfordert die Datenbank Datenquelle, und ich weiß nicht, wie das bekommen .
Liquibase selbst funktioniert gut.
Ist dies eine Java EE oder eine Spring-Anwendung? – Puce
Es ist ein Java EE Projekt :) – Crucios