参考 URL 的 Liquibase JPA 配置
Posted
技术标签:
【中文标题】参考 URL 的 Liquibase JPA 配置【英文标题】:Liquibase JPA configuration of the referenceUrl 【发布时间】:2013-11-17 13:37:54 【问题描述】:我正在努力使用 liquibase 针对我的数据库构建 JPA
带注释的类差异变更集。
尽管如此,我还是对一些事情感到困惑。
我使用以下:
liquibase.properties
#liquibase.properties
driver: org.postgresql.Driver
classpath: real_path/.m2/repository/org/postgresql/postgresql/9.2-1002-jdbc4/postgresql-9.2-1002-jdbc4.jar
url: jdbc:postgresql://localhost:5432/diquiz
username: postgres
password: postgres
referenceUrl: hibernate:ejb3:diQuiz
referenceUsername: postgres
referencePassword: postgres
changeLogFile: changelog-master.xml
和
java -jar real_path\liquibase-core-3.0.6.jar diffChangeLog
以及具有标准 JPA 配置的普通 persistence.xml
文件。
我收到一条错误消息:Liquibase diffChangeLog Failed: java.lang.RuntimeException: Cannot find database driver: Driver class was not specified and could not be determined from the url (hibernate:ejb3:unit)
我很困惑,因为下面的答案说我们需要一个 hibernate.cfg.xml
文件(即使我有 persistence.xml
代替),但是他说我们可以使用一些在 wiki 页面上定义的 url。
Hibernate using JPA (annotated Entities) and liquibase
Wiki 页面说如果我们需要使用 JPA,我们可以在三种类型的 URL 中进行选择。
hibernate:ejb3:myPersistenceUnit
hibernate:ejb3:com.example.MyConfigFactory
hibernate:ejb3:myPersistenceUnit?hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy
所以,我选择了第一个,并在liquidbase.properties中设置为referenceUrl
。
另外,在 wiki 页面上提到:(https://github.com/liquibase/liquibase-hibernate/wiki)
如果您使用的是 Liquibase 的命令行版本,您只需 必须将 liquibase-hibernate[3|4].jar 文件添加到 LIQUIBASE_HOME/lib 目录。
我也是这样做的。 仍然,不起作用。有人可以以某种方式解释我缺少什么吗?
非常感谢!
【问题讨论】:
【参考方案1】:问题是您使用“java -jar”调用 liquibase。 jar 中的 Class-path 行无法从 lib 目录中提取其他 jar,因此 liquibase-hibernate.jar 未包含在类路径中。
使用 liquibase jar 中包含的 sh/bat 文件运行 liquibase:real_path/liquibase[.bat] diffChangeLog
【讨论】:
以上是关于参考 URL 的 Liquibase JPA 配置的主要内容,如果未能解决你的问题,请参考以下文章
Liquibase ERROR 数据库 URL 未指定为参数或属性文件
Flyway 或 Liquibase 可以生成更新脚本而不是直接更新数据库吗?
Liquibase / Spring Boot / Postgres - 模式名称不起作用
LiquiBase 问题,类路径资源 [db/changelog/db.changelog-master.yaml] 无法解析为 URL,因为它不存在