2011-08-01 66 views
0

我想映射一組具有複雜關係的表。我有場下表:將表映射到休眠中的兩個繼承表

Table: Parent 
     id 
     type 

Table: Child1 
     parentId : foreign 
     list of fields 

Table: Child2 
     parentId : foreign 
     list of fields 

在數據庫中的基本思想是父表類型字段確定是否在Child1或CHILD2發生的相關記錄。以這種方式,我根據其類型存儲關於該記錄的信息,例如他們都是客戶,但一些是個人,一些是企業,所以我可以根據這個存儲單獨的信息。

我的問題是我如何在Hibernate中建模?我知道使用@SecondaryTable來合併兩個表,但我怎麼做這取決於父表中的值?

回答

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。任何想法如何這可能工作? –