我正在尝试设置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映射文件执行此操作?
答案 0 :(得分:0)
@Transient
public String getMyEnumerationValue() {
if (this.myEnumeration == null) {
return null;
}
else {
return this.myEnumeration.getValue();
}
}
setter更复杂,因为它需要访问会话以获取具有给定值的枚举的ID(假设它是唯一的)以填充myEnumeration
字段。