2012-07-10 154 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