当前位置: 首页 > 知识库问答 >
问题:

不能得到工作液化碱与Spring冬眠

陶寒
2023-03-14

到目前为止,我已经将liquibase与Spring和标准更改日志文件一起使用。现在我想将它集成到Hibernate中,所以当我对实体进行任何更改时,它应该更改表并更新更改日志表。

我读了许多例子和教程,但无法让它工作。

我使用数据源,entityManagerWorks(denepds-on="liquibase")都可以正常工作。但是当我添加liquibase bean时,它不会从实体更改数据库。并且抛出“no table with name”异常。

如何配置Liquibase与liquibase-hibernate4和Spring?

我的液基豆:

<bean id="liquibase" class="liquibase.integration.spring.SpringLiquibase">
      <property name="dataSource" ref="myJdbcDataSource" />
      <property name="beanName" value="entityManagerFactory" />
      <property name="changeLog" value="classpath:databaseChangeLog.sql" />
</bean>

我刚刚添加了beanName prop作为entityManagerFactory,来自:https://github.com/liquibase/liquibase-hibernate/wiki, http://www.liquibase.org/documentation/spring.html.,并做了我从这篇文章中可以理解的事情。

在这篇帖子中,它提到我们应该使用三种变体之一

hibernate:spring:com/example/spring.xml?bean=sessionFactory
hibernate:spring:com.example?dialect=org.hibernate.dialect.MySQL5Dialect
hibernate:spring:com.example.employee,com.example.auction?dialect=org.hibernate.dialect.MySQL5Dialect

但我不知道当我们使用Spring时,如何将它与液化豆一起使用

共有1个答案

郏佐
2023-03-14

我多年来一直在使用Spring、Liquibase和HiberNate,我不建议您随心所欲地使用它。我的经验告诉我,让HiberNate自动更改您的数据库不是一个好主意。

我不介意更改是通过Hibernate使用hbm2ddl计算的,还是通过liquibase计算的,最终从Hibernate计算数据库更改。您宁愿在将更改合并到更改日志之前监督这些更改。

所以,在我的例子中,我更喜欢配置liquibase(使用maven)来自动编写从比较我的Hibernate映射和数据库(我称之为自动更改日志)中获得的更改日志。然后我在将其与我的更改日志合并之前手动检查更改集。

当然,您可以使用SpringLiquibase bean在每次启动应用程序时自动运行Liquibase更新,这是现成的,但在不同的环境下工作时要小心,您可能会运行不需要的更新...

也许你能找到你感兴趣的帖子http://malaguna.github.io/blog/2015/06/09/liquifying-your-project/

在这里,它描述了我如何使用Spring、HiberNate和Liquibase,正如我告诉你的那样。

 类似资料:
  • 我有一个应用程序,它使用hibernate使用注释创建初始数据库。 有人这样做过吗,如果有请告诉我怎么做。或者至少是另一种选择。是否所有的ORM更新都必须用sql脚本手动创建?

  • 我正在建立liquibase,以便在一个新的Spring Boot应用程序中管理我的数据库。在运行某些集成测试后,我需要类路径中的liquibase依赖项来重置数据库状态。在我的测试中,我不希望在应用程序上下文初始化期间通过spring auto config启用liquibase。我尝试将liquiBase.enabled=false添加到application.properties,但是当我调

  • pom.xml版本信息: SpringFox-Swagger2:2.5.0 昂首阔步-核心:1.5.10 springfox-swagger-ui:2.6.1 Springboot:1.5.3 我有一个项目与swagger2和Springboot。 没有@Aspect的项目代码工作得很好。 正确的结果: 但是当我添加以下代码时,swagger-ui没有显示test-api-impl。 swagge

  • 为什么? 何时应该在项目中使用? 我知道这是为了将所有数据库更改保持在一个地方,但类似的做法也可以通过在某个存储库系统中创建一个简单的文件并随时间不断更新来实现。

  • 我们正计划使用liquibase来维护一些参考数据(dataset少于20k行)。数据将在QC环境中更新和验证,我们希望使用LiquiBase将更改转移到prod。 我使用带有difftypes=data的generateChangeLog

  • 我使用的是Spring批处理版本2.2.4.Release,我试图用有状态的ItemReader、ItemProcessor和ItemWriter bean编写一个简单的示例。 在我的集成测试中,我在一个内部静态java配置类中声明bean,如下所示: 这个测试通过了。 但是,一旦我将StatefulItemReader定义为step范围的bean(这对于有状态的读取器更好),“Before st