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

2024-05-01

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. 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
  4. 将新的变更日志添加到master.xml
  5. 启动您的应用程序,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(使用前将#替换为@)

Jhipster 实体子生成器:如何创建 liquibase DELTA 变更日志? 的相关文章

随机推荐

  • 在应用程序版本中使用 svn 修订号

    在 VS2010 解决方案 不是 NET 中 我希望将 svn 修订号作为应用程序版本的一部分包含在内 我们目前不使用 makefile 仅使用 VS 解决方案 项目设置 我想在编译时获取工作副本修订号 将其存储到变量中 以便稍后在代码中使
  • 使用curl作为fgetcsv的fopen文件资源的替代品

    是否可以制作curl 访问url并将结果作为文件资源 就像 fopen 是如何做到的 我的目标 解析 CSV 文件 将其传递给 fgetcsv 我的障碍 fopen被禁用 我的代码块 在 fopen 中 url http download
  • ld:找不到 -llibtbb.dylib 的库

    我尝试从 opencv 2 4 8 apps haarfinder 编译一些文件 但出现以下错误 ld library not found for llibtbb dylib 注意双l在文件名中 我尝试按照这里的教程进行操作 http co
  • Microsoft EDGE 浏览器忽略企业模式列表

    由于 EDGE 似乎是 Windows 10 的 默认 浏览器 因此我们需要一种方法来 强制 EDGE 以 IE 模式打开我们的网站 或者至少引导用户在 IE 中打开网站 EDGE 似乎忽略了 X UA Compatible 元数据 而我们
  • 序列化的 lambda 且没有serialVersionUID?

    我正在尝试了解 Java 及其最新版本的序列化如何工作 我正在尝试像这样序列化 lambda Runnable r Runnable Serializable gt System out println This is a test 但我注
  • 使用 jaxb 编组时使用派生类

    我有一个具有公共基类的对象列表 我尝试使用 jaxb 将其序列化为 XML 我希望在编组时使用派生类的注释 但我在实现这一点时遇到了麻烦 import java util Arrays import java util List impor
  • 使用 BigInteger 进行 Karatsuba 乘法

    我首先使用 long 编写了 Karasuba 算法的代码 我认为它工作得很好 使用相同的逻辑 我将代码转换为 BigInteger 但由于某些原因 它给出了 StackOverflowError 我不明白为什么 请帮忙 EDIT1 长时间
  • Numpy:导入错误:无法导入名称测试用例

    我安装了 numpy sudo apt get install numpy 然后在 python2 7 中导入 numpy import numpy 我收到这个错误 Traceback most recent call last File
  • 如何使用自定义 llc 编译 Rust 程序?

    我有一个自定义 LLVM 后端 并且想为该自定义 nostd 目标交叉编译 Rust 我想分两步编译 Rust 程序 Using rustc生成 LLVM IR 用我自己的opt and llc将 LLVM IR 转换为机器代码 我尝试使用
  • 如何从 SQL Server 2005 数据库中删除脱机文件

    我有一个数据库 前段时间从 SQL 2000 实例恢复到 SQL 2005 实例 SQL 2000 实例定义了旧的 未使用的全文搜索 看来 当文件恢复时 全文搜索并没有恢复 只是被删除了 这使数据库处于一种有趣的状态 FTS 文件仍然与数据
  • 如何向 SDL 线程发送附加参数?

    是的 我知道如何创建 SDL 线程 int myfunc void data my code SDL CreateThread mythread SDL CreateThread myfunc NULL 但如果我想做类似的事情怎么办 int
  • 在列表列表中查找形状

    节目说明 该计划的目的 我的程序旨在计算 20X15 大小的平面中形状的位置 我有一个形状列表 其中包含形状类型 其 ID 半径或高度以及其在平面上的预期 X Y 位置 我有一个不同的二元运算列表 仅包含形状类型 其 id 及其与另一个形状
  • 如何通过 Python 的请求使用 FTP

    是否可以使用requests与 FTP 站点交互的模块 requests获取 HTTP 页面非常方便 但当我尝试使用 FTP 站点时 我似乎遇到架构错误 我有什么遗漏的吗requests允许我执行 FTP 请求 还是不支持 对于像我一样得到
  • char* 与 const char* 作为参数

    我在使用的时候很多时候都会遇到编译错误char 代替const char 所以 我不确定实际的区别 语法和编译机制 如果您追求两者之间的差异 只需将它们视为 char 是一个指针 指向包含也可以更改的 char 类型值的位置 指针的值可以更
  • 使用 nzsql 将数据导出到 CSV

    我想从 netezza 将数据导出为 CSV 数据由数百万行记录组成 数据应位于引号内 并应使用 作为分隔符 例如 a b c 每当您想要从 Netezza 导出数据时 您都会需要使用其外部表功能 如果要导出到 Netezza 主机本地安装
  • 使用 jQuery 的 $.get 和 GMail API 时出现 401(未经授权)错误

    我试图在用户使用 javascript 使用 G API 登录后运行 jQuery 的 get 但在浏览器控制台中收到 401 未经授权 错误 这是我请求的 url 的格式 https www googleapis com gmail v1
  • Office-js for OneNote 对象中的 getRestApiId 函数

    我正在为 OneNote 开发加载项 但在使用 OneNote REST API 时遇到了问题 因为 Office js 不提供与 REST API 兼容的 ID 堆栈溢出 https stackoverflow com questions
  • 使用端口 80 (Ubuntu / Linode) 运行 Node.js 的最佳实践 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在设置我的第一个Node js服务器上的cloud Linux node我对以下细节还很陌生Linux admin 顺便说一句 我并没有尝试
  • 意外运行 Xcode8 模拟器后,Xcode 8 beta 模拟器无法运行应用程序

    无法启动与模拟器的服务连接 尝试清理应用程序 重新安装它 删除派生数据 重置模拟器设置 重新启动 xCode 我还听说其他人通过重新创建模拟器来解决模拟器的问题 我也尝试过 当我按创建时 我收到完全相同的错误消息 回复中返回错误 连接无效
  • Jhipster 实体子生成器:如何创建 liquibase DELTA 变更日志?

    jhipster version 5 3 4 我正在评估 JHipster 并测试它如何处理数据库 DDL 修改 在我的测试中 我创建了一个 Jhipster 项目 然后运行jhipster import jdl model jh JHip