Java Liquibase与Tapestry和Hibernate集成:初始模式创建步骤

Java Liquibase与Tapestry和Hibernate集成:初始模式创建步骤,java,hibernate,tapestry,liquibase,Java,Hibernate,Tapestry,Liquibase,我有一个基于Tapestry框架的项目。它使用Hibernate作为ORM库 我的类使用注释映射到数据库 我想将Liquibase集成到我的项目中,以便能够维护数据库状态,进行版本更新 到目前为止,我所做的是以下步骤: 1) 我已经创建了服务对:LiquibaseService->LiquibaseService-impl liquibase.serivce具有方法public void update(),该方法从hibernate.cfg.xml配置创建独立的数据源,最后执行liquibase

我有一个基于
Tapestry
框架的项目。它使用
Hibernate
作为ORM库

我的类使用
注释映射到数据库

我想将
Liquibase
集成到我的项目中,以便能够维护数据库状态,进行版本更新

到目前为止,我所做的是以下步骤:

1) 我已经创建了服务对:
LiquibaseService
->
LiquibaseService-impl

liquibase.serivce
具有方法
public void update()
,该方法从
hibernate.cfg.xml
配置创建独立的
数据源,最后执行
liquibase.update(“生产”)

2) 我已在
AppModule
中为此服务添加了绑定:

binder.bind(LiquibaseService.class,LiquibaseService.impl.class)

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
独立启动,并抱怨方案中没有任何映射到我的类的表


我如何才能放慢
休眠
的速度,直到
Liquibase
完成它的工作为止?

不用@Startup,你可以这样做

    public static void contributeRegistryStartup(
     final Logger logger, final LiquibaseService liquibaseService,
     OrderedConfiguration<Runnable> configuration)
    {
        configuration.add("Liquibase", new Runnable()
        {
            public void run()
            {
                logger.info("Updating database by liquibase service...");
                liquibaseService.update();
                logger.info("update-db done.");
            }
        }, "after:HibernateStartup");
    }
公共静态无效贡献者注册启动(
最终记录器,最终液化服务液化服务,
OrderedConfiguration(配置)
{
add(“Liquibase”,new Runnable())
{
公开募捐
{
info(“通过liquibase服务更新数据库…”);
liquibaseService.update();
info(“更新数据库完成”);
}
},“之后:HibernateStartup”);
}

你的意思是,
Tapestry
将自动注入
Logger
LiquibaseService
,是吗?TapestryOC将所有参数注入AppModule#contribute方法,并且您始终可以从内部匿名类访问最终变量。是的,它确实有效,我检查了它。谢谢,这是一个有趣的决定。我将+1您的答案,但我仍然对如何使用注释来实现这一点感兴趣。或者这是不可能的?你还不能做。不过你可以提交一份jira