java - Liquibase + Hibernate 重命名列

标签 java hibernate jpa liquibase liquibase-hibernate

我使用 H2 数据库来存储我的数据,并使用 liquibase(带有 hibernate 插件)来检查数据库和 projet 之间的差异。

假设我有以下代码:

@Entity
public class myEntity{

    @Column(name="val")
    private int value;

}

数据库已就位并已存储一些数据。

现在,当我将上述列重命名为“val”并运行 liquibase:diff 时,difflog 会显示删除“val”列并添加“value”列。

显然这不是我想要的,因为原来存储在“val”列中的所有数据都会消失。

有没有办法告诉 liquibase 它不是一个新列,而是一个旧的重命名列?

我想运行 liquibase:diff 并且生成的 diffLog 应自动包含我的列的重命名...标记,而不是添加...和删除..一个..

最佳答案

您是否尝试按如下方式使用变更集(或者我的问题是否错误)

   <changeSet author="liquibase-docs" id="renameColumn-example">
        <renameColumn columnDataType="int"
                newColumnName="value"
                oldColumnName="val"
                remarks="A change in names"
                schemaName="public"
                tableName="myEntity"/>
    </changeSet>

关于java - Liquibase + Hibernate 重命名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39484137/

相关文章:

java - 强制调用基类方法

java - 使 JPA 在 JBoss 服务器上与 Spring Framework 一起工作

java - 具有相同数据/列但表名不同的 Hibernate 和表

java - 从用户处获取密码值,我想在 url 路径中使用此密码,我使用 thymeleaf 作为模板引擎

java - 根据模式生成所有二进制数

java - 减少java中的文件缓存

java - JPA 2.1 ManyToOne,如果子实体是最后一个实体,则删除子实体(一侧)

spring-boot - "JdbcSQLIntegrityConstraintViolationException: Unique index or primary key violation"升级到Spring Boot 2.7后出现异常

hibernate - 外键必须与多对一映射的引用主键具有相同的列数

java - MySQL 集群错误失败,查询时出现错误 'Got error 240 ' 未知错误代码“来自 NDBCLUSTER”