gpt4 book ai didi

java - Jhipster实体子生成器: How to create liquibase DELTA changelogs?

转载 作者:行者123 更新时间:2023-12-02 09:41:12 25 4
gpt4 key购买 nike

jhipster --version

5.3.4

我正在评估 JHipster 并测试它如何处理数据库 DDL 修改。在我的测试中,我创建了一个 Jhipster 项目,然后运行 ​​jhipster import-jdl model.jh 。 JHipster 生成了所有集成测试,一切看起来都很好。所以我部署到生产中。但后来我意识到我定义了一组实体之间的错误关系。原文model.jh文件声明为 one-to-many当我打算声明many-to-one时的关系关系。

为了修复这种关系,我尝试了三种方法。首先我尝试纠正model.jh中的关系文件并重新运行jhipster import-jdl 。这做出了我需要的正确更改,只不过它覆盖了 liquibase 变更日志文件,而不是创建仅包含增量的新变更日志条目。

所以我恢复了该更改,并尝试使用实体子生成器。它也修改了原始变更日志文件,而不是创建增量变更日志文件。因此我恢复了这些更改以尝试另一种方法。

我手动对实体进行了更改,然后使用 mvn liquibase:diff 。这种方法最接近我所需要的。它确实创建了一个新的更改日志,而不是更新原始文件。但是,新的变更日志试图改变的不仅仅是与关系相关的列。它试图更改表中几个不相关列的数据类型。它删除了现有专栏中的评论/评论。简而言之,它基本上是从头开始重新定义整个表格,所做的更改比我试图进行的小更改所需的要多。我最终也恢复了这种方法。

所以,我的问题是,对于那些 JHipster 和 liquibase 的经验丰富的用户来说,在生产中使用实体后如何修改它们?您只是手动创建更改日志,还是有自动生成它们的好方法?

最佳答案

  1. 在 JDL 中进行更改并导入
  2. 恢复由实体生成器(包括 master.xml)引起的数据库变更日志文件的更改
  3. 编译 Java(Liquibase 检查已编译的代码)并运行命令以生成 Liquibase 变更日志
    • Maven:./mvnw 编译 liquibase:diff
    • Gradle:./gradlewcompileJava liquibaseDiffChangelog -PrunList=diffLog
  4. 将新的变更日志添加到 master.xml
  5. 启动您的应用,liquibase 将运行变更日志,您的数据库将保持最新

步骤 3-5 记录在 JHipster 的 "Using a Database" 中文档。请注意,这些步骤仅在您在开发中使用本地数据库时才有效,目前不适用于 H2。

您可以将这些步骤视为提交 in this branch on Github .

关于java - Jhipster实体子生成器: How to create liquibase DELTA changelogs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52998524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com