使用Hibernate进行枚举/类型代码

时间:2011-08-18 16:05:25

标签: java hibernate

我正在尝试设置Hibernate XML文件,以便枚举作为字符串值而不是类实例进行访问。

数据库架构:

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

这提供了许多MyEntity行到一个MyEnumeration行的映射。 MyEnumeration的一个例子可能是国家。

Hibernate 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映射文件执行此操作?

1 个答案:

答案 0 :(得分:0)

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

setter更复杂,因为它需要访问会话以获取具有给定值的枚举的ID(假设它是唯一的)以填充myEnumeration字段。