首页 > 解决方案 > 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])"

请,任何有关如何正确执行此操作的帮助或指示将不胜感激。谢谢你们。

标签: springhibernatejpaone-to-manyrelational

解决方案


这确实是一个奇怪的要求(如果我们知道这些表中的数据可能更有意义)但无论如何要获得 1:N,您应该在下一个表中使用外键,因此 B 具有 A 的外键,C 具有指向 B 的外键等等。

默认情况下,Hibernate (jpa) 将使用单独的中间表进行映射,这使得它看起来像多对多,但您可以使用@JoinColumn如下所示自定义此行为

https://www.baeldung.com/jpa-join-column#oneToMany_mapping


推荐阅读