问题标签 [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.
liquibase - 如何以编程方式从 DatabaseChangeLog 生成 xml 文件
我以编程方式对 DatabaseChangeLog 对象进行了更改。我如何根据 java 中的 DatabaseChangeLog 生成 diffChangeLogFile 文件。
编辑:这是一个例子
此方法将有一个 DatabaseChangeLog 对象作为输入,当表名等于 tableName 参数时,它将从中删除 dropColumn 更改。
在对 DatabaseChangeLog 对象进行此修改后,我想生成一个 xml 文件,其中包含相对于 DatabaseChangeLog 对象的变更集(liquibase 在 diff 之后生成的 xml 以进行更新)。
像这样的东西:
databaseChange.generateXmlFile(pathToFile);
spring-data-jpa - 将 UUID 作为字段映射到 mysql 数据库时的列类型错误
我已经定义了一个具有“java.util.UUID”作为其“Id”字段的域类。
我正在使用 liquibase 生成数据库。
MySQL 中生成的表将生成的 id 列描述为“char(36)”。
运行测试用例时出现问题。它说以下内容并且没有执行任何测试用例。
liquibase - Liquibase 仅运行单个变更日志
我设置了一个主更改日志,其中包含我的所有更改日志,如下所示:
问题只是列表中的最后一个更改日志实际运行。我希望他们所有人一个接一个地运行,而不仅仅是最后一个。我将所有先决条件的“onFail”设置为“CONTINUE”,因此即使遇到错误,它也应该继续其余的变更日志。任何帮助将不胜感激,谢谢!
spring - spring 如何使用 liquibase 从数据库和持久性实体之间的差异生成变更日志?
请我需要在 spring(基于 JAVA 的配置)中解决上述问题,而不是在 spring boot 中。我在网上找到的大多数教程都是基于 spring boot,但我的应用程序没有在 spring boot 上运行,只是 spring mvc。我的类路径中已经有必要的依赖项,即 liquibase-core-3.5.3 和 liquibase-hibernate5-3.6 jars。
我还创建了 liquibase 属性文件(也在类路径中),如下所示
现在的问题是我如何执行它来生成一个差异更改日志文件?
java - 让 Hibernate 对 Liquibase 的“uuid”感到满意
使用 JPA/Hibernate,定义具有以下字段的实体:
使用 Liquibase,知道这是一个 UUID,在更改日志中有以下内容:
我们喜欢在启动时使用 Hibernate 的hbm2ddl.auto=validate
/ 。ddl-auto=validate
现在,对于 MySQL,Hibernate 会认为这应该是VARCHAR
,而我们知道长度是固定的 ,CHAR
Liquibase 可以从中派生type="uuid"
(实际上,Liquibase 在它的 中定义了这个UUIDType
)。因此,启动时的 Hibernate 验证将对VARCHAR
和之间的类型差异犹豫不决CHAR
。
如何以规范的方式解决此问题?规范对我来说意味着:
- 不要
type="uuid"
在 Liquibase 更改日志中妥协 - 不要使用
@Column(..., columnDefinition="CHAR")
,因为这不是严格可移植的
(我目前正在通过自己覆盖 LiquibaseUUIDType
并将列设为 a来解决此问题VARCHAR
,但CHAR
无论如何,严格来说似乎更好。这似乎是一个矫枉过正的解决方案。)
显然,这不是一个直接的问题(因为我有解决方法),但我想学习正确的方法来做到这一点。
java - 为 Liquibase 任务添加 Gradle 任务
我正在使用带有 Gradle 的 JHipster 4.5.4 作为构建系统,并希望添加 Gradle 任务以执行 Liquibase 任务,例如验证或重置。我使用 JHipster 附带的 liquibaseDiffChangelog 任务作为模板。此任务定义如下:
我从简单地用validate交换diffChangeLog开始,然后收到类路径错误。我还添加了一个类路径参数,最终得到了这样的任务定义:
主文件被读取,因为它提到了正确的文件名,所以这部分很好。但它无法识别master.xml文件中引用的实际变更集文件的路径。这是错误消息:
如何正确添加类路径?
java - Postgresql 的 Liquibase addAutoIncrement 错误
我在尝试使用 liquibase 和 spring boot 创建自动增量时遇到问题,并出现以下错误
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
提前谢谢了。
spring - 如何增量更新变更日志?
我已经生成了更改日志
我有一个“创建表”更改日志。
在它之后,我通过添加一个新列来更改表并运行
生成变更日志
再次。我希望看到带有“create table”和“alter table”的增量日志,但它显示“ChangeLog ......已经存在!”。
如何增量更新 ChangeLog?
谢谢!