我设法按照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更新逻辑移到那个地方吗?
答案 0 :(得分:0)
您的EntityManager是否也在侦听器中启动(例如spring的侦听器)?
通常,app服务器按照web.xml文件中列出的顺序启动侦听器,确保在启动hibernate之前列出了liquibase侦听器。