我們有一個內部工具,將Hibernate的應用程序視圖與管理數據庫的Liquibase更新日誌進行比較。這是使用Liquibase 3.3.1,它發現了Liquibase 2.x沒有看到的數據庫差異,我們不願意忽略它。我們已經忽略比較所有的觀點:忽略Liquibase中的項目diff
CompareControl control = new CompareControl();
control.getComparedTypes().remove(View.class);
DiffResult result = liquibase.diff(reference, target, control);
DiffOutputControl output = new DiffOutputControl(false, false, false);
DiffToChangeLog changeLog = new DiffToChangeLog(result, output);
我們想忽略其他的比較是:
默認值。當向數據庫添加列時,我們使用Hibernate不知道的默認值:
<changeSet author="adrian (generated)" id="1419421913188-163">
<dropDefaultValue columnDataType="timestamp(29,6)" columnName="timestamp" tableName="transportjob"/>
</changeSet>
外鍵約束。我們將一些外鍵約束更改爲CASCADE
。 (這與Liquibase Diff Tool missing constraints完全相反)。
<changeSet author="adrian (generated)" id="1419421913188-90">
<dropForeignKeyConstraint baseTableName="site" constraintName="fk_rpietmexbx0ywmlywidira71h"/>
<addForeignKeyConstraint baseColumnNames="logo_id" baseTableName="site" constraintName="fk_rpietmexbx0ywmlywidira71h" referencedColumnNames="id" referencedTableName="image"/>
</changeSet>