Hibernateで多対多の関係を実現するには、3つのテーブルが必要ですか?
質問する
782 次
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 に答える