Cug*_*uga 8 java orm hibernate nhibernate-mapping
在hibernate中,是否可以将类的映射定义为一组枚举?
我已经能够找到如何定义集合映射的示例,我已经能够找到有关如何映射枚举的单独示例,但我无法弄清楚如何为类定义枚举.
有谁能请我提供一个例子?
这是在现有应用程序之上构建的,因此我无法更改数据库架构.
这是我希望建模的关系.Wicket是一个普通的类,WicketType是一个Java Enum.
+----------------+ +------------+ +------------+
| Wicket | | Ref Table | | WicketType |
+----------------+ +------------+ +------------+
| INT | W_ID | | | | W_TypeId |
| .... | | FK | W_ID | FK | WicketType |
| INT | TYPE |----| W_TypeId |----| |
+----------------+ +------------+ +------------+
Run Code Online (Sandbox Code Playgroud)
再次感谢
这不符合您的需要吗?
为了详细说明轻率的初始响应,参考文献提供了一种使用枚举序数来映射枚举的方法。
在这种情况下,它实际上比看起来更简单,因为您将枚举托管在一个集合中,您需要为 WicketType 到 IntEnumUserType 的子类型提供一个访问器,超类型将负责将序号映射到实例。
package test;
public class WicketTypeState extends IntEnumUserType<WicketType> {
private WicketType wicketType;
public WicketTypeState() {
// we must give the values of the enum to the parent.
super(WicketType.class, WicketType.values());
}
public WicketType getWicketType() {
return wicketType;
}
public void setWicketType(final WicketType wicketType) {
this.wicketType = wicketType;
}
}
Run Code Online (Sandbox Code Playgroud)
定义枚举表的映射:
<hibernate-mapping package="test">
<class name="Wicket" table="Wicket">
<id name="id" column="ID"/>
<set name="wicketTypes" table="WicketType" inverse="true">
<key column="ID"/>
<one-to-many class="test.WicketTypeState"/>
</set>
</class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)
然后,对于具有枚举集的类型,为该属性定义一个集映射:
<hibernate-mapping package="test">
<class name="WicketTypeState" lazy="true" table="WicketType">
<id name="WicketType"
type="test.WicketTypeState"/>
</class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)
这适用于我的盒子(tm),如果您需要更多信息,请告诉我。
| 归档时间: |
|
| 查看次数: |
17138 次 |
| 最近记录: |