2011-08-18 44 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映射文件中获得这个功能。 –