我有一个在 Weblogic 容器中使用的 Java EE Web 应用程序(hibernate3、seam)。我想介绍用于模式迁移的 Liquibase。目前我们使用
<property name="hibernate.hbm2ddl.auto" value="update"/>
我们想放弃它,因为它可能很危险。
我希望迁移在部署时自动发生,因此我使用了 servlet 侦听器集成。
在 web.xml 中,第一个监听器是:
<listener>
<listener-class>liquibase.integration.servlet.LiquibaseServletListener</listener-class>
</listener>
可悲的是,这个监听器在 Hibernate 初始化之后开始发挥作用,它会抛出丢失的表错误(因为模式是空的)。我像老板一样在谷歌上搜索了几个小时,现在我有点困惑。
提前致谢
更新
如果我设置<property name="hibernate.hbm2ddl.auto" value="none" />
,liquibase 会成功完成它的工作,并且应用程序会按预期启动。如果我设置validate
,似乎休眠模式验证发生在 liquibase 之前,并且由于缺少表而哭泣。
更新
似乎Seam初始化了Hibernate,但Liquibase侦听器列在SeamListener之前,所以我不知道如何同时启用模式验证和liquibase......