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 的经验丰富的用户来说,在生产中使用实体后如何修改它们?您只是手动创建变更日志,还是有自动生成变更日志的好方法?
- 在 JDL 中进行更改并将其导入
- 恢复由实体生成器引起的数据库更改日志文件的更改(包括
master.xml
)
- Compile the Java (Liquibase checks against compiled code) and run the command to generate the Liquibase changelog
- Maven:
./mvnw compile liquibase:diff
- Gradle:
./gradlew compileJava liquibaseDiffChangelog -PrunList=diffLog
- 将新的变更日志添加到
master.xml
- 启动您的应用程序,liquibase 将运行更改日志,您的数据库将是最新的
步骤 3-5 记录在 JHipster 中“使用数据库” https://www.jhipster.tech/development/#using-a-database文档。请注意,这些步骤仅在您在开发中使用本地数据库时才有效,目前不适用于 H2。
您可以将这些步骤视为提交在 Github 上的这个分支中 https://github.com/ruddell/jhipster-examples/commits/update-existing-entity.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)