第一種方法:使用一張表并且使用一個字段表明不同的subclass
<discriminator
column="XXXXX"
type="XXXX"/>
表示subclass的不同的地方,
column="XXXXX"為數據庫中的區分column
如:
<discriminator
column="BILLING_DETAILS_TYPE"
type="string"/>
<subclass
name="CreditCard"
discriminator-value="CC">
<property
name="type"
column="CREDIT_CARD_TYPE"/>
...
</subclass>
第二種方法:使用多張表并且使用主外健關系
<joined-subclass
name="CreditCard"
table="CREDIT_CARD">
<key column="CREDIT_CARD_ID">----------
外健
<property
name="type"
column="TYPE"/>
...
</joined-subclass>
第二種方式由于涉及到外健關系相聯,在取數據的時候會對數據庫資源的要求很高