2012-07-10 266 views
1

我在MySQL表中有一列,它有一個枚舉變量:「questionTypes」Java在枚舉中的枚舉

我將如何爲此創建實體?

字符串我這樣做:

@Column(name = "explanation") 

private String explanation 

public String getExplanation() { 
    return explanation; 
} 

public void setExplanation(String explanation) { 
    this.explanation = explanation; 
} 

我應該對枚舉嗎?

回答

5

添加JPA的枚舉註釋(省略getter/setter方法):

@Entity 
class Answer { 
    @Column(name = "explanation") 
    private String explanation 

    @Column(name = "questionType") 
    @Enumerated(EnumType.STRING) 
    private QuestionType type 
} 

其中QuestionType是一個普通的Java枚舉。

+0

使用EnumType.ORDINAL爲您的枚舉持續一個數值,使用EnumType.STRING來持久化您的枚舉的字符串值。我更喜歡後者,它更容易在數據庫中讀取。 – DaveRlz 2012-07-10 22:53:57

+1

我會避免EnumType.ORDINAL,因爲它會允許某人在枚舉列表的末尾以外的某個位置放置另一個值。如果您使用EnumType.STRING,則源中的排序無關緊要。如果有人出去取消價值,你只會遇到問題。 – Matt 2012-07-11 02:47:44

+1

...或重命名一個值。 – meriton 2013-06-22 04:42:33