有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Jhipster实体子生成器:如何创建liquibase增量变更日志?

jhipster --version

5.3.4

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

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

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

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

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


共 (1) 个答案

  1. # 1 楼答案

    1. 在JDL中进行更改并导入它
    2. 还原由实体生成器(包括master.xml)引起的对数据库变更日志文件的更改
    3. 编译Java(根据编译后的代码进行Liquibase检查),并运行命令生成Liquibase变更日志
      • Maven:./mvnw compile liquibase:diff
      • 渐变:./gradlew compileJava liquibaseDiffChangelog -PrunList=diffLog
    4. 将新的变更日志添加到master.xml
    5. 启动你的应用程序,liquibase将运行更改日志,你的数据库将是最新的

    步骤3-5记录在JHipster的"Using a Database"文档中。请注意,这些步骤仅适用于在dev中使用本地数据库的情况,它目前不适用于H2

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