我正在努力使用liquibase针对我的数据库构建JPA
注解的classes diff变更集。不过,我还是对一些事情感到困惑。
我使用以下方法:
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
代替),但他说,我们可以使用一些url的定义在wiki页面。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
所以我选择了第一个,我在www.example.com中将其设置liquidbase.properties为referenceUrl
。
此外,在wiki页面上还提到:(https://github.com/liquibase/liquibase-hibernate/wiki)
如果您使用的是命令行版本的Liquibase,那么只需添加liquibase-hibernate[3]| 4].jar文件到LIQUIBASE_HOME/lib目录。
这也是我做的还是不行。有人能给我解释一下我错过了什么吗?
非常感谢!
1条答案
按热度按时间weylhg0b1#
问题是您正在用“java -jar”调用liquibase。jar中的Class-path行不能从lib目录中获取其他jar,因此liquibase-hibernate.jar没有包含在类路径中。
使用包含在liquibase jar中的sh/bat文件运行liquibase:
real_path/liquibase[.bat] diffChangeLog