java - 在使用 Hibernate 和 Spring Boot 进行实体继承的情况下,如何避免多重创建 FK 约束
问题描述
我们在 Java 中将 Hibernate 与 Spring Boot 一起使用,并具有以下实体层次结构:
注意:没有 DashboardWidgetComposition 或 CommentingWidgetComposition 表。只有 WidgetComposition,它有一个 TYPE 列,将两个子实体的值分开。
当使用 Spring Boot Hibernate 启动我们的应用程序时,会尝试通过查看实体来创建表。然而,由于我们引入了新表格,我们看到了以下警告消息:
2021-09-13 15:14:56.863 [1;31mERROR[0;39m [ main] ... [36morg.hibernate.tool.hbm2ddl.SchemaExport [0;39m [35mHHH000389: Unsuccessful: alter table CommentingWidgetAssignment add constraint FK_eoss4oqc93g6i87b8bqj63lw6 foreign key (WIDGET_COMPOSITION_ID) references WidgetComposition[0;39m [34m[0;39m
2021-09-13 15:14:56.863 [1;31mERROR[0;39m [ main] ... [36morg.hibernate.tool.hbm2ddl.SchemaExport [0;39m [35mBedingung "FK_EOSS4OQC93G6I87B8BQJ63LW6" besteht bereits
Constraint "FK_EOSS4OQC93G6I87B8BQJ63LW6" already exists; SQL statement:
alter table CommentingWidgetAssignment add constraint FK_eoss4oqc93g6i87b8bqj63lw6 foreign key (WIDGET_COMPOSITION_ID) references WidgetComposition [90045-192][0;39m [34m[0;39m
2021-09-13 15:14:56.865 [1;31mERROR[0;39m [ main] ... [36morg.hibernate.tool.hbm2ddl.SchemaExport [0;39m [35mHHH000389: Unsuccessful: alter table DashboardWidgetAssignment add constraint FK_lv0oeri9odmo5ph60jhpl9wm8 foreign key (WIDGET_COMPOSITION_ID) references WidgetComposition[0;39m [34m[0;39m
2021-09-13 15:14:56.866 [1;31mERROR[0;39m [ main] ... [36morg.hibernate.tool.hbm2ddl.SchemaExport [0;39m [35mBedingung "FK_LV0OERI9ODMO5PH60JHPL9WM8" besteht bereits
Constraint "FK_LV0OERI9ODMO5PH60JHPL9WM8" already exists; SQL statement:
alter table DashboardWidgetAssignment add constraint FK_lv0oeri9odmo5ph60jhpl9wm8 foreign key (WIDGET_COMPOSITION_ID) references WidgetComposition [90045-192][0;39m [34m[0;39m
简而言之
Unsuccessful: alter table DashboardWidgetAssignment add constraint FK_eoss4oqc93g6i87b8bqj63lw6 foreign key (WIDGET_COMPOSITION_ID) references WidgetComposition
如果我 - 例如 - 将 DashboardWidgetAssignment 更改为不从 WorkCenterWidgetAssignment 继承,而是直接引用 DashboardWidgetComposition,我不会收到该消息。
为什么 hibernate 在继承的情况下会尝试创建两次 FK 约束?我怎样才能防止这种情况?我错过了正确的注释吗?
非常欢迎任何提示和/或帮助。
解决方案
推荐阅读
- javascript - 将 react-bootstrap 复选框设置为取消选中状态
- javascript - 如何创建进度条的可点击进度条增量和减量值 20%
- camera - 以低比特率和 H264/H265 编解码器录制 4k/25fps 视频流的最佳硬件/软件?
- javascript - 给定年份的给定月份的天数
- firebase - 如何跨具有部分相同结果集的不同查询计算读取计数?
- json - 动态构建 JSON - PowerShell
- firefox - Firefox 登录问题:使用 Google 登录选项不可用
- php - ftp_put 失败 ssl 读取失败
- c# - 我想在远程主机上将 .exe 作为网络服务器运行
- c# - Azure - Web 部署任务失败 [System.AggregateException - WebToolsException] ERROR_COULD_NOT_CONNECT_TO_REMOTESVC