2010-04-02 86 views
35

我在我的Java模型上有一个枚举类型,我想映射到数据库上的一个表。我正在使用Hibernate Annotations,我不知道该怎么做。由于我搜索的答案相当老,我想知道哪种方法最好?使用Hibernate注释映射枚举类型

在此先感谢

回答

62

你需要比@Enumerated注释别的东西?例如,下面的枚举:

public enum MyEnum { 
    VALUE1, VALUE2; 
} 

可以用来和注释是这样的:

private MyEnum myEnum; 
@Column(name="myenum") 
@Enumerated(EnumType.ORDINAL) 
public MyEnum getMyEnum() { 
    return myEnum 
} 

您可以指定枚举应在数据库与@Enumerated注释的EnumType枚举属性被持久化。 EnumType.ORDINAL指定枚举将作为整数值持久化。这里,myEnum设置为VALUE1将持久化为0,VALUE2为1,等等

的替代方法是使用EnumType.STRING指定的枚举将利用该字段被设置为枚举值的名称来保留。因此,应用到前面的示例中,将字段myEnum设置为MyEnum.VALUE1将持续为VALUE1等。

+0

谢谢!我想这正是我所期待的。我要试一试 – Thiago 2010-04-02 20:58:40

+0

我可以为enum类的@Id字段输入什么? – Thiago 2010-04-02 21:19:55

+1

@Thiago什么?你的枚举通常不是一个实体,它没有'@ Id'字段。你能否更新你的问题以显示你在做什么? – 2010-04-02 21:46:17