为什么在多对一的双向关系中,多方始终是关系的拥有方?

时间:2013-09-11 06:12:36

标签: java hibernate jpa orm

文件说:

  

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

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

2 个答案:

答案 0 :(得分:2)

那是因为在数据库中,很多方面都有外键。例如考虑表格 具有关系用户的用户和交易具有许多交易。在事务表中,每个事务都有一个user_id,它是用户表的外键,而不是相反。用户表没有transaction_id。

答案 1 :(得分:2)

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

换句话说,如果A是“多”方而B是“一方”,那么对于B表中的每一行,可能有几行表A包含对它的引用。这些B行中的每一行都可以将链接的A行的键存储在单个列中。没有办法让那一行存储所有这些B行的密钥。

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