0

List<B> クラス B オブジェクトのリスト ( listOfBs )を持つクラス A があるとします。データベース設計では、これは、クラス B を表すテーブルがクラス A を表すテーブルの行を参照する外部キーを持つ必要があることを意味します。現在、クラス B はクラス C、D、および E のスーパークラスです。クラス A の私の休止状態マッピング ファイルは次のとおりです。クラス A エントリをデータベースに格納し、クラス A のリストに含まれるクラス B の複数のエントリを同時にカスケードするのに問題なく動作します。

クラス A Hibernate マッピング ファイル:

<hibernate-mapping package="..."> 
    <class name="A" table="table_of_A"> 
        <id name="key" column="A_ID"> 
            <generator class="native"/> 
        </id> 
        <property name="...." type="long"/>
        <property name="...." type="string"/>
        <list name="listOfBs" access="field" cascade="all">
               <key column="A_ID" not-null="true" />
               <list-index column="idx"/>
               <one-to-many class="B"/>
        </list>
    </class> 
</hibernate-mapping>

クラスC、D、およびEのオブジェクトを含む可能性のあるlistOfBsをデータベースに保存できるように、上記の休止状態ファイルに何を含める必要があるかを理解しようとしています。したがって、 listOfBsの各オブジェクトは適切な場所に移動する必要がありますデータベース内のテーブル。休止状態で継承をマッピングするための暗黙的なポリモーフィズム戦略を使用して、具体的なクラスごとにテーブルを使用していることに注意してください。

どんな助けでも本当に感謝します。前もって感謝します。

4

1 に答える 1

0

したがって、ここでは具象クラスごとにテーブルを使用しており、スーパークラスとして B であるため、休止状態によって提供される一般化機能を使用できます。

Hibernate では、継承を表現する方法が 3 つあります。

1. クラス階層ごとの表

2. サブクラスごとのテーブル

3.具体的なクラスごとのテーブル

クラスを使用しているためtable per concrete、以下のようにクラス B マッピングを変更する必要があります

<class name="B">
<id name="id" column="ID">
    <generator class="sequence"/>
</id>
<property name="name" column="NAME"/>
<union-subclass name="C" table="C">
    <property name="${properties}" column="collumns"/>
</union-subclass>
<union-subclass name="D" table="D">
    <property name="${properties}" column="collumns"/>
</union-subclass>
<union-subclass name="E" table="E">
    <property name="${properties}" column="collumns"/>
</union-subclass>
</class>

参考リンクです

于 2013-06-25T12:16:28.217 に答える