JHipster通过json生成实体时提示changelogDate无效如何解决?
问题根源
你使用new Date().getTime()生成的13位毫秒时间戳不符合JHipster对changelogDate的格式要求。JHipster要求changelogDate为14位数字字符串,格式为yyyyMMddHHmmss(年+月+日+时+分+秒,每个部分不足两位补前导0),比如20210909214241这种格式。
你删除dateOfBirth字段后命令正常运行,是因为只有实体存在LocalDate/LocalDateTime这类日期类型字段时,JHipster才需要解析changelogDate生成对应范围的假测试数据,没有日期字段时不会触发该校验逻辑。
changelogDate的核心作用
- 作为Liquibase数据库变更集的唯一标识:JHipster基于Liquibase实现数据库版本管理,每个实体对应的数据库变更集ID由
changelogDate生成,确保不同变更集不会重复,避免数据库迁移时出现冲突。 - 作为日期类字段假数据的生成基准:当实体包含日期类型字段时,JHipster会以
changelogDate对应的时间为基准,生成该时间前后合理范围内的假数据,填充到Liquibase的测试数据CSV文件中,这也是你存在日期字段时会触发格式校验的原因。
解决方法
替换你实体JSON文件中的changelogDate为符合要求的14位字符串即可,你可以用以下代码生成符合格式的changelogDate:
const now = new Date(); const changelogDate = [ now.getFullYear(), String(now.getMonth() + 1).padStart(2, '0'), String(now.getDate()).padStart(2, '0'), String(now.getHours()).padStart(2, '0'), String(now.getMinutes()).padStart(2, '0'), String(now.getSeconds()).padStart(2, '0') ].join('');
修改完成后重新运行命令即可正常执行:jhipster entity Customer --skip-install --force
内容的提问来源于stack exchange,提问作者Dibyaratnam Samarlia
相关产品推荐
相关产品推荐

