2011-08-18 97 views
0

我想設置Hibernate的XML文件,使枚舉作爲字符串值而不是類實例訪問。使用Hibernate的枚舉/類型代碼

的DB模式:

table MyEntity (EntityId, EnumerationId) 
table MyEnumeration (EnumerationId, EnumerationValue) 

這提供了許多myEntity所行的映射到一個MyEnumeration一行。 MyEnumeration的一個例子可能是國家。

休眠hbm2hbmxml生產:

<hibernate-mapping> 
    <class name="MyEntity" table="MyEntity"> 
     <many-to-one name="myEnumeration" class="MyEnumeration" fetch="select"> 
      <column name="EnumerationId" length="36" /> 
     </many-to-one> 
     ... 
</hibernate-mapping> 

以上在作品現在我可以訪問MyEnumeration情況在我的代碼,然後將EnumerationValue的映射。不過,我想抽象一下。相反,我想以字符串訪問myEnumeration屬性而不是MyEnumeration類。

我如何用Hibernate映射文件做到這一點?

回答

0
@Transient 
public String getMyEnumerationValue() { 
    if (this.myEnumeration == null) { 
     return null; 
    } 
    else { 
     return this.myEnumeration.getValue(); 
    } 
} 

setter是比較複雜的,因爲它需要訪問會話獲得爲給定值的枚舉的ID(只要它是唯一),以填充myEnumeration領域。

+0

我實際上是在動態映射模式下使用Hibernate。所以我試圖在Hibernate映射文件中獲得這個功能。 –