首页 > 解决方案 > 将 Entity 对象自动转换为 changeSet

问题描述

我在我的 Java 项目中创建了许多这样的实体:

@Data
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name="backup_item")
public class BackupItem {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Long id;
    public Path path;
}

现在我需要为其创建更改日志:

<databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd">

    <changeSet id="1" author="rrrr">
        <sql>
            CREATE TABLE backup_item(
            id SERIAL PRIMARY KEY NOT NULL,
            );
        </sql>
        <rollback>
            DROP TABLE backupset;
        </rollback>
    </changeSet>

是否有任何工具可以自动为我创建它?我至少有 10 张桌子,我要花很多时间手动一张一张地创建它们。

标签: javajpaliquibase

解决方案


您可以使用 liquibase-maven-plugin,如本教程第 6 章所示。(标题:使用 Maven 插件生成 changeLog):

https://www.baeldung.com/liquibase-refactor-schema-of-java-app

虽然自动生成的变更日志不是那么可靠,我什至看到了不推荐 liquibase 开发人员的帖子。他们不支持很多东西,比如检测重命名的列等。

建议手动编写更改日志,因为您可以更好地控制脚本本身...


推荐阅读