gpt4 book ai didi

java - 接缝/hibernate : liquibase before JPA startup

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:55:53 26 4
gpt4 key购买 nike

我有一个在 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 初始化后开始发挥作用,它会抛出缺少表的错误(因为模式是空的)。我像老板一样用 google 搜索了几个小时,现在有点困惑。

提前致谢

更新

如果我设置 <property name="hibernate.hbm2ddl.auto" value="none" /> ,liquibase 成功完成它的工作并且应用程序按预期启动。如果我设置 validate ,似乎 hibernate 模式验证发生在 liquibase 之前,它因为缺少表而哭泣。

更新

似乎 Seam 初始化了 Hibernate,但是 Liquibase 监听器列在 SeamListener 之前,所以我不知道如何同时启用模式验证和 liquibase...

最佳答案

我的理解是 LiquibaseServletListener 需要使用 liquibase.changelog 上下文参数传递的更改日志文件的路径。所以您已经生成了更改日志,或者我在这里遗漏了什么?

你可以看看liquibase hibernate integration Liquibase 提供的库。该库适用于经典的 hibernate 配置(通过 .cfg 和 .xml 文件)以及通过 persistence.xml 的 JPA 配置。

据我所知,生成变更日志和运行变更日志是两个独立的过程。 Liquibase hibernate 集成库有助于根据持久性单元中实体的当前状态与当前数据库状态的差异生成更改日志。

关于java - 接缝/hibernate : liquibase before JPA startup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19813021/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com