java - 将 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 张桌子,我要花很多时间手动一张一张地创建它们。
解决方案
您可以使用 liquibase-maven-plugin,如本教程第 6 章所示。(标题:使用 Maven 插件生成 changeLog):
https://www.baeldung.com/liquibase-refactor-schema-of-java-app
虽然自动生成的变更日志不是那么可靠,我什至看到了不推荐 liquibase 开发人员的帖子。他们不支持很多东西,比如检测重命名的列等。
建议手动编写更改日志,因为您可以更好地控制脚本本身...
推荐阅读
- angular - 如何在没有应用按钮的情况下使用angular6中的角度材料过滤价格范围
- c - 在c中的两次执行之间故意更改随机内存位置
- java - RestController 中的 Spring RequestMapping 返回 406
- javascript - 在编辑器中上传图片 - 最佳方法?
- sql-server - 根据利率和投资方式计算每月利息
- linux - 由于未解析的符号,无法插入 Linux 内核模块
- jquery - django jquery自动完成搜索框不显示结果
- loops - 在 Racket 中使用宏破坏 While 循环
- python - Python“传播”模拟
- c - scanf("%f", &weight) 和 scanf("%f", weight) 如何判断何时添加前缀 &