Weblogic コンテナーで使用している Java EE Web アプリケーション (hibernate3、seam) があります。スキーマ移行のために Liquibase を紹介したいと思います。現在、私たちは使用しています
<property name="hibernate.hbm2ddl.auto" value="update"/>
危険なので落としたい。
デプロイ時に移行を自動的に行いたいので、サーブレット リスナー統合を使用しています。
web.xml では、最初のリスナーは次のとおりです。
<listener>
<listener-class>liquibase.integration.servlet.LiquibaseServletListener</listener-class>
</listener>
悲しいことに、このリスナーは Hibernate の初期化後に機能し、欠落テーブル エラーをスローします (スキーマが空であるため)。私は上司のように何時間もググっており、今は少し混乱しています。
前もって感謝します
アップデート
を設定する<property name="hibernate.hbm2ddl.auto" value="none" />
と、liquibase はその仕事を正常に終了し、アプリは期待どおりに起動します。を設定validate
すると、liquibase の前に hibernate スキーマの検証が行われ、テーブルが見つからないために泣くようです。
アップデート
Seam は Hibernate を初期化するようですが、Liquibase リスナーは SeamListener の前にリストされているため、スキーマ検証と Liquibase を同時に有効にする方法がわかりません...