2010-04-02 134 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