我有一個使用JPA進行持久化的Java項目。 現在我想將LiquiBase集成到我的項目中,但我不知道如何更改JPA/Liquibase的執行順序。Liquibase + JPA:運行訂單
爲清楚: 到現在爲止我的persistence.xml看起來是這樣的:
<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"/>
我現在試圖設置:
<property name="eclipselink.ddl-generation" value="none"/>
使liquibase處理所有數據庫的東西。
但現在當我運行我的代碼時,JPA會拋出一個錯誤,因爲有些表缺失,儘管這些表應該由liquibase創建,這使我相信JPA在liquibase之前運行。
如何更改該訂單? 直到現在,Liquibase在代碼通過此行執行:
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());
我讀的地方,這可以通過Liquibase Servlet的監聽器來實現,但這需要數據庫的數據源,並且我不知道怎麼去說。
Liquibase本身工作正常。
這是一個Java EE還是Spring應用程序? – Puce
它的Java EE項目:) – Crucios