【问题标题】:Why is in many to one bidirectional relation many side is always the owning side of the relationship?为什么在多对一双向关系中,多方总是关系的拥有方?
【发布时间】:2013-09-15 01:05:55
【问题描述】:

文档说:

多对一双向关系的多面不能 定义 mappedBy 元素。多方永远是拥有方 关系。

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

【问题讨论】:

    标签: java hibernate jpa orm


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2014-01-26
        • 2012-09-25
        • 1970-01-01
        • 1970-01-01
        • 2011-07-12
        • 1970-01-01
        • 1970-01-01
        • 2011-06-04
        • 1970-01-01
        相关资源
        最近更新 更多