在Hibernate中,我们需要3个表来完成多对多的关系吗?

时间:2012-09-04 10:30:01

标签: hibernate

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

2 个答案:

答案 0 :(得分:1)

是,

在系统分析中,多对多关系是一种基数,它指的是两个实体之间的关系(另请参见实体 - 关系模型)A和B,其中A可能包含父行,其中有B中有很多孩子,反之亦然。例如,将A视为作者,将B视为书籍。作者可以写几本书,一本书可以由几位作者撰写。因为大多数数据库管理系统仅支持一对多关系,所以有必要通过第三交汇表(交叉引用表)物理地实现这种关系,例如,AB具有两个一对多关系A - > AB和B - > AB。在这种情况下,AB的逻辑主键由两个外键(即A和B的主键的副本)组成。

如果你愿意,你可以拥有更多,但3是最低

答案 1 :(得分:0)

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

查看association mapping上的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>