3

文档说:

多对一双向关系的多方不得定义 mappedBy 元素。多方始终是关系的拥有方。

你能解释一下为什么吗?什么原因?

4

2 回答 2

3

表示“多”侧实体的每一行(可能多行)都包含(外键)对将关系的“一”侧实体表示为单个数据库列的单行的引用。为了让“one”方拥有关系,与“many”方对应的所有行的键必须适合单个数据库表行,这是不切实际的。

换句话说,如果A是“多”侧并且B是“一侧”,则对于表中的每一行,B表中可能有几行A包含对其的引用。这些 B 行中的每一行都可以将链接的 A 行的键存储在单个列中。A 行无法存储所有 B 行的键。

出于同样的原因,在多对多关系的情况下,除了表示实体的表之外,连接表总是最终被使用,以便将外键引用链接为单个列。

于 2013-09-11T06:30:21.590 回答
2

那是因为在数据库中,多方都有外键。例如考虑表用户和事务与关系用户有很多事务。在事务表中,每个事务都有一个 user_id,它是用户表的外键,反之亦然。用户表没有 transaction_id。

于 2013-09-11T06:25:35.670 回答