2011-08-01 18 views
0

複雑な関係を持つテーブルのセットをマップしようとしています。基本的な考え方は、親テーブルタイプフィールドは、関連レコードがCHILD1またはCHILD2て発生するかどうかを決めることであるデータベースでHibernateの2つの継承テーブルへのテーブルのマッピング

Table: Parent 
     id 
     type 

Table: Child1 
     parentId : foreign 
     list of fields 

Table: Child2 
     parentId : foreign 
     list of fields 

:私は、次のフィールドを持つテーブルを持っています。このようにして、そのタイプに応じてレコードに関する情報を格納する。彼らはすべての顧客ですが、いくつかは個人であり、いくつかはビジネスですので、私はこれに応じて別の情報を保存することができます。

私の質問は、これをHibernateでどのようにモデル化するのですか? @SecondaryTableを使用して2つのテーブルをマージすることは知っていますが、これは親テーブルの値に依存してどのように行うのですか?

答えて

1

あなたが探しているのは、クラスのために弁別子列を使用していることです。 Hibernate docs re inheritance mapping

を参照してください例は、これは素晴らしい感謝を探します

<class name="Payment" table="PAYMENT"> 
    <id name="id" type="long" column="PAYMENT_ID"> 
     <generator class="native"/> 
    </id> 
    <discriminator column="PAYMENT_TYPE" type="string"/> 
    <property name="amount" column="AMOUNT"/> 
    ... 
    <subclass name="CreditCardPayment" discriminator-value="CREDIT"> 
     <join table="CREDIT_PAYMENT"> 
      <property name="creditCardType" column="CCTYPE"/> 
      ... 
     </join> 
    </subclass> 
    <subclass name="CashPayment" discriminator-value="CASH"> 
     ... 
    </subclass> 
    <subclass name="ChequePayment" discriminator-value="CHEQUE"> 
     ... 
    </subclass> 
</class> 
+0

です。アノテーションでこれを行う方法についても説明できますか? –

+0

@Michael:http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#d0e1168 –

+0

サディストではない、あるいは私は弁別者を取るように言われている他のテーブルからそのテーブルに記述されている異質のIDです。どのようにこれが機能するかもしれない任意の考えですか? –

関連する問題