2010-08-13 21 views
8

我有一個現有的角色類型包含數據的表。我試圖用Table per class hierarchy NHibernate的這個表映射:將多個鑑別值映射到NHibernate中的單個默認類

<class name="IRoleType" table="RoleType"> 

    <id name="Id" column="RoleID"> 
    <generator class="native" /> 
    </id> 

    <discriminator column="RoleID" />  

    <property name="Description" column="Description" /> 
    <!-- ... more properties ... --> 

    <subclass name="RoleA" discriminator-value="1" /> 
    <subclass name="RoleB" discriminator-value="4" /> 
    <subclass name="RoleC" discriminator-value="7" /> 
</class> 

這裏,IRoleType是一個接口,實現類RoleARoleBROLEC。這工作。但是,這裏的問題 -

該表包含未映射到持久類的具有「額外」鑑別符值(2,3,5,6)的行。這些值在域中不推薦使用,因此對於爲每個類創建持久化類無用。但是我們也不能從數據庫中刪除它們。

有沒有辦法將這些額外的行映射到一個「默認」類?如果不是,我還能如何解決這個問題?

謝謝!

回答

17

您可以通過將這些值映射到一個值來完成此操作。例如:

<discriminator 
    formula="case when RoleID in (2,3,5,6) then 0 else RoleId end" />  
<subclass name="RoleA" discriminator-value="1" /> 
<subclass name="RoleB" discriminator-value="4" /> 
<subclass name="RoleC" discriminator-value="7" /> 
<subclass name="DefaultRole" discriminator-value="0" /> 
相關問題