0

Hibernateで多対多の関係を実現するには、3つのテーブルが必要ですか?

4

2 に答える 2

1

はい、

システム分析では、多対多の関係は、2つのエンティティ(エンティティ関係モデルも参照)AとBの間の関係を参照するカーディナリティの一種であり、Aには多くの子が存在する親行が含まれる場合があります。 Bおよびその逆。たとえば、Aを著者、Bを本と考えてください。著者は複数の本を書くことができ、本は複数の著者によって書くことができます。ほとんどのデータベース管理システムは1対多の関係のみをサポートするため、3番目のジャンクションテーブル(相互参照テーブル)、たとえば2つの1対多の関係A->ABとABを介してそのような関係を物理的に実装する必要があります。 B->AB。この場合、ABの論理主キーは、2つの外部キー(つまり、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 に答える