【问题标题】:Proper procedure for modifying JHipster Entities using JDL使用 JDL 修改 JHipster 实体的正确程序
【发布时间】:2020-03-29 17:31:03
【问题描述】:

我正在尝试使用 Monolith 和基于磁盘的 H2 数据库的 JHipster(版本 6.4.1)。我在 JDL 中创建了一些实体,并让基本的 CRUD 网页正常工作。现在我对这个过程感到满意,我想添加字段并重命名其他字段。我想我可以简单地更新 JDL,重新导入 JDL,启动应用程序,然后查看更改的结果。我看到的是来自 Liquibase 的 ValidationFailedException 以及由于数据库问题而引发 HTTP 500 错误的应用程序。

我已经到处寻找有关处理这种看似常见的开发场景的正确流程的指导。我寻找指导的大多数地方(例如https://www.jhipster.tech/creating-an-entity)都讨论了将 JDL 导入为一次性操作,而不讨论如何逐步更改和导入 JDL。

我尝试了一些在 SO 上看到的建议,例如不覆盖更改日志、执行 liquibase:diff 并将其添加到 master.xml。这仍然会导致ValidationFailedException。在master.xml 我看到<!-- jhipster-needle-liquibase-add-changelog - JHipster will add liquibase changelogs here --> 的评论让我相信JHipster 应该做繁重的工作,但我只是错过了一步。

我绝不是 JHipster 也不是 Liquibase 专家,但我想学习。如何执行简单的实体更新而不费力?

[更新更多细节]

在重新导入更新后的 JDL 后,我设法通过使用 rm -rf target/h2db/db 删除数据库来摆脱 DB 验证错误。

我对我的更改感到满意,并且觉得提交是有序的。我看到的是

  • master.xml 不变
  • 第一次 JDL 导入的变更日志已被修改以包含我所做的更新

如果我了解 liquibase 的工作原理,我会预料到

  1. 不会触及任何现有的变更日志
  2. 将创建一个全新的更改日志文件,其中仅包含我这一轮所做的 JDL 更改
  3. master.xml 的更改只是因为它将包含一个额外的更改日志条目,指向在第 2 项中创建的文件

我是否误解了 Liquibase 如何代表 DB 架构的演变?

【问题讨论】:

  • 就我在过去几个月中一直在努力更新和升级、文档和课程方面的 JHipster 和 liquibase 集成而言,有时唯一的方法是编辑 master.xml 和其他更改日志 xml-包括您自己的初始文件(和添加新文件)的文件,如所述,例如在udemy.com/course/angular-4-java-developers/learn/lecture/…。如果实体及其关系没有“进化”而是(破坏性)变化,也许只有这种情况。我还认为 liquibase 会自动帮助不必总是删除我的数据。

标签: jhipster liquibase jdl


【解决方案1】:

您引用的页面似乎确实有一些更新实体的说明。 Farther down the page我看到了这个:

更新现有实体

实体配置保存在一个 .jhipster 目录中的特定 .json 文件。所以如果你运行 再次子生成器,使用现有实体名称,您可以更新或 重新生成实体。

当您为现有实体运行实体子生成器时,您将 被问到一个问题‘你想更新实体吗?这会 替换此实体的现有文件,您的所有自定义代码将 被以下选项覆盖:

  • 是的,重新生成实体 - 这只会重新生成您的实体。 提示:这可以通过在运行时传递 --regenerate 标志来强制执行 子生成器
  • 是的,添加更多字段和关系 - 这将 向您提出问题以添加更多字段和关系
  • 是的,删除字段和关系 - 这会给您一些要删除的问题 实体中的现有字段和关系
  • 不,退出 - 这将退出子生成器而不更改任何内容

你可能想要 出于以下原因更新您的实体:

  • 您想要向现有实体添加/删除字段和关系
  • 您希望将实体代码重置为其原始状态
  • 您已更新 JHipster,并希望您的实体生成 新模板
  • 您已修改 .json 配置文件( 格式非常接近生成器提出的问题,所以它是 不是很复杂),所以你可以拥有一个新版本的实体
  • 您已经复制/粘贴了 .json 文件,并且想要一个新实体 非常接近复制的实体

【讨论】:

  • 这就是回复,@SteveDonie。我也试过这个过程,但它产生了同样失败的变更日志。
  • 您能否提供更多有关您遇到 Paul 的错误的详细信息?
  • 我已经用更多细节和部分解决方法更新了原始帖子
猜你喜欢
  • 1970-01-01
  • 2016-10-30
  • 2016-10-06
  • 2022-07-19
  • 1970-01-01
  • 1970-01-01
  • 2018-10-04
  • 1970-01-01
相关资源
最近更新 更多