我目前正在开发一个使用Hibernate和Liquibase的Spring项目.我想要实现的是每次构建项目时自动更新Liquibase的更改日志.它应该根据我当前的高效数据库和我更新的Hibernate实体生成差异.
但我遇到的问题是每次清理和重建我的项目时都会出现以下错误:
liquibase-plugin: Running the 'main' activity...
INFO 6/22/15 11:12 AM: liquibase-hibernate: Reading hibernate configuration hibernate:spring:com.example.name.domain?dialect=org.hibernate.dialect.MySQL5Dialect
INFO 6/22/15 11:12 AM: liquibase-hibernate: Found package com.example.app.domain
INFO 6/22/15 11:12 AM: liquibase-hibernate: Found dialect org.hibernate.dialect.MySQL5Dialect
Unexpected error running Liquibase: Unable to resolve persistence unit root URL
SEVERE 6/22/15 11:12 AM: liquibase: Unable to resolve persistence unit root URL
liquibase.exception.DatabaseException: javax.persistence.PersistenceException: Unable to resolve persistence unit root URL
at liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(CommandLineUtils.java:69)
at liquibase.integration.commandline.Main.createReferenceDatabaseFromCommandParams(Main.java:1169)
at liquibase.integration.commandline.Main.doMigration(Main.java:936)
at liquibase.integration.commandline.Main.run(Main.java:175)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at …Run Code Online (Sandbox Code Playgroud) 我目前在我的一个小项目中使用Liquibase,效果很好。但是现在我正面临一个问题。我的ChangeLog可以在我的测试环境中按预期工作,但在我的生产环境中却无法正常工作。发生这种情况是因为我的产品表包含几行数据。
我知道liquibase中有一个UPDATE-Command,但是我不确定如何正确使用它。
我要存档的是将一列从表B移动到表A,而不会丢失其数据。表B包含表A的外键。普通的SQL语句看起来像update A set A.x = (select B.x from B where B.id = A.id)
如果有人可以给我一个这样的更新变更集的示例,那就太好了。
谢谢!