【发布时间】:2018-01-20 16:09:17
【问题描述】:
我有一个 Spring Boot 应用程序并希望使用 Liquibase 为我的 JPA 实体生成更改日志。但是,我会遇到不同的问题,具体取决于我的方法。
- 我的第一种方法是使用 maven 插件的 diff 目标。 url 是我的带有 H2 驱动程序的 H2 开发数据库,参考 URL 类似于“hibernate:spring:myBasePackage.myEntityPackage?dialect=org.hibernate.dialect.H2Dialect”,带有驱动程序“liquibase.ext.hibernate.database.connection.HibernateDriver”。在这种情况下,Liquibase 似乎可以识别我的实体,但会将差异打印到控制台。此外,差异不具有变更日志文件的形式。
- 我的第二种方法是使用 maven 插件的 generateChangeLog 目标。在这种情况下,我的网址是“hibernate:spring:myBasePackage.myEntityPackage?dialect=org.hibernate.dialect.H2Dialect”,驱动程序为“liquibase.ext.hibernate.database.connection.HibernateDriver” 。在这种情况下,我收到错误“无法解析持久性单元根 URL:类路径资源 [] 无法解析为 URL,因为它不存在”。此错误可能是在 Spring 和 Liquibase 问题跟踪器中都找到了,但似乎总是说这个错误已经修复。
- 我的第三种方法基本上与第二种方法类似,但在这种情况下,我使用的是“hibernate:classic”url,并实现了“CustomClassicConfigurationFactory”,它注册我的注释类明确。这确实有效。但是,在这种情况下,我必须在我的 application-jar 中执行此操作。我必须将我的 application-jar 添加为 maven-plugin 的依赖项。因此,在生成变更日志之前,我必须构建我的 application-jar(并将其安装到本地 Maven 存储库)。这似乎很麻烦。
我的问题是:
- 是否有更简单的方法可以在基于 Spring 引导的应用程序中为 JPA 实体生成更改日志?
- 为什么前两种方法不起作用?
- 有没有办法简化第三种方法?
我正在使用:
- Spring Boot 1.5.4.RELEASE
- Liquibase-Hibernate4 3.6
- Liquibase 3.5.3
非常感谢。
【问题讨论】:
标签: spring liquibase liquibase-hibernate