spring - Spring:每个关系都带有关系表的奇怪单对映射
问题描述
我正在尝试按照我被告知的方式建立一些关系。我有 6 张桌子……我们称它们为 A、B、C、D、E 和 F。
它们之间的关系始终是 1:N。
我被要求通过每次创建一个新的关系表来映射 Spring/JPA 中的这些表,如下所示:
A + B -> AB
AB + C -> ABC
ABC + D -> ABCD
ABCD + E -> ACBDE
ACBDE + F -> ABCDEF
...其中 AB、ABC、ACBD、ABCDE 和 ACBDEF 是我必须创建的新关系表。
像这样映射表对我来说感觉很奇怪,当它们之间的关系不是 N:N 而是 1:N 时更是如此。另外,我看不到 donig 的目的,我来这里是想看看你们是否可以帮助我解决这两个问题:了解为什么这样做有意义,以及如何实现这一点?
我已经尝试了 2 天,但是将表映射为 N:N,并且我总是收到类似“Caused by: org.hibernate.MappingException: Foreign key (FKsxjpculqrp0noj2x8cetijcof:CEV_ambito [id_amb])) 的错误与引用的主键相同的列数 (CEV_ambito [FK_tea_amb,id_amb])"
请,任何有关如何正确执行此操作的帮助或指示将不胜感激。谢谢你们。
解决方案
这确实是一个奇怪的要求(如果我们知道这些表中的数据可能更有意义)但无论如何要获得 1:N,您应该在下一个表中使用外键,因此 B 具有 A 的外键,C 具有指向 B 的外键等等。
默认情况下,Hibernate (jpa) 将使用单独的中间表进行映射,这使得它看起来像多对多,但您可以使用@JoinColumn
如下所示自定义此行为
推荐阅读
- javascript - 数据更改时视图不更新,React,js
- python - 如何在python中将作为类属性的未知长度列表中的每个项目打印为字符串?
- java - 使用 JNA 将 C 代码映射到 Java 时,我应该为这种结构使用哪些类?
- spring-boot - 如何重新设计我的代码以减少代码冗余
- reactjs - 将 React.useReducer 重构为 redux。更新状态导致渲染问题
- android - 将 Android 房间数据库添加到项目后,任务:app:checkDebugDuplicateClasses FAILED 问题一次
- asp.net-core-mvc - 在 ASP.Net Core MVC 中调用 WebAPI
- twig - Twig - 路径和动态方法名
- javascript - Node/Javascript 循环同步
- postgresql - 如何将数组列中的项目与 Postgres 中的不同表匹配?