我有基于Tapestry
框架的项目。它Hibernate
用作 ORM 库。
我的类使用annotations
.
我想集成Liquibase
到我的项目中,以便能够维护数据库状态,进行版本更新。
到目前为止,我所做的是以下步骤:
1)我创建了服务对:LiquibaseService
-> LiquibaseServiceImpl
。
LiquibaseSerivce
has 方法public void update()
,它独立DataSource
于hibernate.cfg.xml
配置创建并最终执行liquibase.update("production");
2) 我在以下位置添加了对此服务的绑定AppModule
:
binder.bind(LiquibaseService.class, LiquibaseServiceImpl.class).eagerLoad();
3)我添加了开始更新的initMyApplication
方法:AppModule
Liquibase
@Startup
public static void initMyApplication(Logger logger, LiquibaseService liquibaseService) {
logger.info("Updating database by liquibase service...");
liquibaseService.update();
logger.info("update-db done.");
}
所有这些在生产环境中都可以正常工作,其中已经创建了初始方案:我可以轻松地删除表、列等。
Liquibase
但问题是,在将应用程序部署到新服务器时,我无法从零(使用)创建新方案:Hibernate
独立启动并抱怨,方案中没有映射到我的类的任何表。
我怎样才能放慢开始直到完成工作的Hibernate
那一刻?Liquibase