如何修复JHipster配置一对一关系后offer表缺失offer_profile_id报错
报错原因
这个错误是Hibernate做schema校验时,检测到offer表中不存在用于关联offer_profile实体的外键列offer_profile_id导致的,你写的实体关联注解配置本身没有问题,你之前手动修改@JoinColumn显式指定列名的操作也是正确的,无需回滚,问题出在数据库表结构没有和实体配置同步更新。
解决步骤
- 第一步:确认Liquibase变更日志已生成
你编辑已有Offer实体添加一对一关联后,JHipster会自动在src/main/resources/config/liquibase/changelog/目录下生成带时间戳前缀的变更日志文件,确认该文件存在且包含给offer表新增外键列的逻辑,参考结构如下:
如果该文件不存在,你可以手动新建一个变更日志添加上述逻辑,或者直接给<changeSet id="自动生成的时间戳" author="jhipster"> <addColumn tableName="offer"> <column name="offer_profile_id" type="bigint"> <constraints unique="true" foreignKeyName="fk_offer_offer_profile_id" references="offer_profile(id)" /> </column> </addColumn> </changeSet>offer表手动新增offer_profile_id外键列(仅开发环境临时调试用,不推荐)。 - 第二步:执行Liquibase数据库迁移
开发环境下如果没关闭自动迁移配置,项目启动时会自动执行未运行的变更日志。如果没自动执行,可手动执行对应命令完成表结构更新:- Maven项目执行命令:
./mvnw liquibase:update - Gradle项目执行命令:
./gradlew liquibaseUpdate
- Maven项目执行命令:
- 开发环境临时方案
如果你是本地测试不需要保留历史数据,可以直接删除现有数据库,重启项目后JHipster会自动执行全量变更日志,自动创建包含offer_profile_id列的offer表,即可解决报错。
内容的提问来源于stack exchange,提问作者Mario
相关产品推荐
相关产品推荐

