Liquibase:如何在EntityManager构造之前执行Servlet侦听器

时间:2010-08-02 13:49:43

标签: java servlets jpa jboss liquibase

我设法按照Liquibase Servlet Listener中的说明发布 Liquibase更新

<listener>
    <listener-class>liquibase.servlet.LiquibaseServletListener</listener-class>
</listener>

这有效地执行了我的更新日志。

然而,在设置EntityManager之后会发生。显然,如果我希望我的持久性提供程序验证数据库模式,那就太晚了:

   <property name="hibernate.hbm2ddl.auto" value="validate"/>

......表格根本就不存在。

我有没有办法让Liquibase更新数据库模式,初始化EntityManager之前?

PS:AppServer是JBoss6

========================= [更新] ================ ===========

根据下面与Nathan的简短讨论,我可能需要重新解释如下问题:

  

是否有人知道JBoss启动序列之前的代码挂钩   初始化EntityManager?

如果存在,我可以将Liquibase更新逻辑移到那个地方吗?

1 个答案:

答案 0 :(得分:0)

您的EntityManager是否也在侦听器中启动(例如spring的侦听器)?

通常,app服务器按照web.xml文件中列出的顺序启动侦听器,确保在启动hibernate之前列出了liquibase侦听器。