0

我们需要 3 个表来完成休眠中的多对多关系吗?

4

2 回答 2

1

是的,

在系B 反之亦然。例如,将 A 视为作者,将 B 视为书籍。一个作者可以写几本书,而一本书可以由几个作者写。因为大多数数据库管理系统只支持一对多关系,所以有必要通过第三个联结表(交叉引用表)物理实现这种关系,比如 AB 有两个一对多关系 A -> AB 和乙->乙。在这种情况下,AB 的逻辑主键由两个外键(即 A 和 B 的主键的副本)形成。

如果您愿意,您也可以拥有更多,但最少 3 个

于 2012-09-04T10:35:42.073 回答
0

您的问题更多地与休眠自身的多对多关系的性质有关。是的,正如 G-Man 正确指出的那样,您需要 3 个表(或更多)来实现它。

看看hibernate关于关联映射的文档,尤其是第7.5.3节

这是取自同一文档的示例:

<class name="Person">
    <id name="id" column="personId">
        <generator class="native"/>
    </id>
    <set name="addresses" table="PersonAddress">
        <key column="personId"/>
        <many-to-many column="addressId"
            class="Address"/>
    </set>
</class>

<class name="Address">
    <id name="id" column="addressId">
        <generator class="native"/>
    </id>
    <set name="people" inverse="true" table="PersonAddress">
        <key column="addressId"/>
        <many-to-many column="personId"
            class="Person"/>
    </set>
</class>
于 2012-09-04T10:48:43.660 回答