问题标签 [liquibase-hibernate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
939 浏览

liquibase - 如何以编程方式从 DatabaseChangeLog 生成 xml 文件

我以编程方式对 DatabaseChangeLog 对象进行了更改。我如何根据 java 中的 DatabaseChangeLog 生成 diffChangeLogFile 文件。

编辑:这是一个例子

此方法将有一个 DatabaseChangeLog 对象作为输入,当表名等于 tableName 参数时,它将从中删除 dropColumn 更改。

在对 DatabaseChangeLog 对象进行此修改后,我想生成一个 xml 文件,其中包含相对于 DatabaseChangeLog 对象的变更集(liquibase 在 diff 之后生成的 xml 以进行更新)。

像这样的东西:

databaseChange.generateXmlFile(pathToFile);

0 投票
2 回答
704 浏览

spring-data-jpa - 将 UUID 作为字段映射到 mysql 数据库时的列类型错误

我已经定义了一个具有“java.util.UUID”作为其“Id”字段的域类。

我正在使用 liquibase 生成数据库。

MySQL 中生成的表将生成的 id 列描述为“char(36)”。

运行测试用例时出现问题。它说以下内容并且没有执行任何测试用例。

0 投票
1 回答
149 浏览

liquibase - Liquibase 仅运行单个变更日志

我设置了一个主更改日志,其中包含我的所有更改日志,如下所示:

问题只是列表中的最后一个更改日志实际运行。我希望他们所有人一个接一个地运行,而不仅仅是最后一个。我将所有先决条件的“onFail”设置为“CONTINUE”,因此即使遇到错误,它也应该继续其余的变更日志。任何帮助将不胜感激,谢谢!

0 投票
2 回答
4619 浏览

spring - spring 如何使用 liquibase 从数据库和持久性实体之间的差异生成变更日志?

请我需要在 spring(基于 JAVA 的配置)中解决上述问题,而不是在 spring boot 中。我在网上找到的大多数教程都是基于 spring boot,但我的应用程序没有在 spring boot 上运行,只是 spring mvc。我的类路径中已经有必要的依赖项,即 liquibase-core-3.5.3 和 liquibase-hibernate5-3.6 jars。

我还创建了 liquibase 属性文件(也在类路径中),如下所示

现在的问题是我如何执行它来生成一个差异更改日志文件?

0 投票
0 回答
541 浏览

java - 让 Hibernate 对 Liquibase 的“uuid”感到满意

使用 JPA/Hibernate,定义具有以下字段的实体:

使用 Liquibase,知道这是一个 UUID,在更改日志中有以下内容:

我们喜欢在启动时使用 Hibernate 的hbm2ddl.auto=validate/ 。ddl-auto=validate现在,对于 MySQL,Hibernate 会认为这应该是VARCHAR,而我们知道长度是固定的 ,CHARLiquibase 可以从中派生type="uuid"(实际上,Liquibase 在它的 中定义了这个UUIDType)。因此,启动时的 Hibernate 验证将对VARCHAR和之间的类型差异犹豫不决CHAR

如何以规范的方式解决此问题?规范对我来说意味着:

  • 不要type="uuid"在 Liquibase 更改日志中妥协
  • 不要使用@Column(..., columnDefinition="CHAR"),因为这不是严格可移植的

(我目前正在通过自己覆盖 LiquibaseUUIDType并将列设为 a来解决此问题VARCHAR,但CHAR无论如何,严格来说似乎更好。这似乎是一个矫枉过正的解决方案。)

显然,这不是一个直接的问题(因为我有解决方法),但我想学习正确的方法来做到这一点。

0 投票
1 回答
630 浏览

java - 为 Liquibase 任务添加 Gradle 任务

我正在使用带有 Gradle 的 JHipster 4.5.4 作为构建系统,并希望添加 Gradle 任务以执行 Liquibase 任务,例如验证或重置。我使用 JHipster 附带的 liquibaseDiffChangelog 任务作为模板。此任务定义如下:

我从简单地用validate交换diffChangeLog开始,然后收到类路径错误。我还添加了一个类路径参数,最终得到了这样的任务定义:

主文件被读取,因为它提到了正确的文件名,所以这部分很好。但它无法识别master.xml文件中引用的实际变更集文件的路径。这是错误消息:

如何正确添加类路径?

0 投票
1 回答
303 浏览

java - Postgresql 的 Liquibase addAutoIncrement 错误

我在尝试使用 liquibase 和 spring boot 创建自动增量时遇到问题,并出现以下错误

0 投票
0 回答
314 浏览

liquibase - liquibase-hibernate 将所有表显示为“意外”

我按照这些步骤让 liquibase-hibernate 工作。我希望我正确理解了wiki中的说明。

我们的休眠实体在文件中声明applicationContext.xml。我们没有hibernate.cfg.xml. 我的 liquibase 属性是:

问题是无论我输入什么somePackage,liquibase都会将所有内容(表、列、约束)显示为“意外”。somePackage即使 Liquibase 不存在,它也会“找到” 。

比较结果就像

我真的不知道发生了什么,也不知道我是否做错了什么。任何帮助,将不胜感激。

0 投票
1 回答
1309 浏览

spring - 使用 Liquibase 和 Spring Boot

我有一个 Spring Boot 应用程序并想使用 Liquibase 为我的 JPA 实体生成更改日志。但是,根据我的方法,我会遇到不同的问题。

  • 我的第一种方法是使用 Maven 插件的diff目标。url 是我的带有 H2 驱动程序的 H2 开发数据库,​​参考 URL 类似于带有驱动程序“ liquibase.ext.hibernate.database.connection ”的“ hibernate:spring:myBasePackage.myEntityPackage?dialect=org.hibernate.dialect.H2Dialect ” .HibernateDriver ”。在这种情况下,Liquibase 似乎可以识别我的实体,但会将差异打印到控制台。此外,差异没有变更日志文件的形式。
  • 我的第二种方法是使用 maven 插件的generateChangeLog目标。在这种情况下,我的 url 是“ hibernate:spring:myBasePackage.myEntityPackage?dialect=org.hibernate.dialect.H2Dialect ”,驱动程序为“ liquibase.ext.hibernate.database.connection.HibernateDriver。在这种情况下,我收到一个错误”无法解析持久性单元根 URL:类路径资源 [] 无法解析为 URL,因为它不存在”。这个错误可以在 Spring 和 Liquibase 问题跟踪器中找到,但似乎总是这样说错误已经修复。
  • 我的第三种方法基本上与第二种方法类似,但在这种情况下,我使用了一个带有“ CustomClassicConfigurationFactory ”实现的“ hibernate:classic ”url ,它显式地注册了我的注释类。这确实有效。但是,在这种情况下,我必须在我的 application-jar 中执行此操作。我必须将我的 application-jar 添加为 maven-plugin 的依赖项。因此,在生成更改日志之前,我必须构建我的 application-jar(并将其安装到本地 Maven 存储库)。这似乎很麻烦。

我的问题是:

  • 有没有一种更简单的方法可以在基于 Spring 引导的应用程序中为 JPA 实体生成更改日志?
  • 为什么前两种方法不起作用?
  • 有没有办法简化第三种方法?

我在用:

  • Spring Boot 1.5.4.RELEASE
  • Liquibase-Hibernate4 3.6
  • Liquibase 3.5.3

提前谢谢了。

0 投票
1 回答
366 浏览

spring - 如何增量更新变更日志?

我已经生成了更改日志

我有一个“创建表”更改日志。

在它之后,我通过添加一个新列来更改表并运行

生成变更日志

再次。我希望看到带有“create table”和“alter table”的增量日志,但它显示“ChangeLog ......已经存在!”。

如何增量更新 ChangeLog?

谢谢!