我们需要 3 个表来完成休眠中的多对多关系吗?
问问题
782 次
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 回答