hibernate中的javaenum

hibernate中的javaenum,java,hibernate,enums,Java,Hibernate,Enums,我在MySQL表中有一列,其中有一个枚举变量:“questionTypes” 我将如何为此创建实体 对于字符串,我执行以下操作: @Column(name = "explanation") private String explanation public String getExplanation() { return explanation; } public void setExplanation(String explanation) { this.explanation

我在MySQL表中有一列,其中有一个枚举变量:“questionTypes”

我将如何为此创建实体

对于字符串,我执行以下操作:

@Column(name = "explanation")

private String explanation

public String getExplanation() {
  return explanation;
}

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

我应该为枚举做什么?

添加JPA的枚举注释(省略getter/setter):


其中
QuestionType
是一个常规Java枚举。

添加JPA的枚举注释(省略getter/setter):


其中
QuestionType
是常规Java枚举。

使用EnumType.ORDINAL为枚举保留数值,使用EnumType.STRING为枚举保留字符串值。我更喜欢后者,它更容易在数据库中读取。我会避免EnumType.ORDINAL,因为它允许某人将另一个值放在enum列表末尾以外的某个位置。如果使用EnumType.STRING,则源中的顺序无关紧要。只有当有人完全删除某个值时,您才会出现问题。请使用EnumType.ORDINAL为您的枚举保留数值,使用EnumType.STRING为您的枚举保留字符串值。我更喜欢后者,它更容易在数据库中读取。我会避免EnumType.ORDINAL,因为它允许某人将另一个值放在enum列表末尾以外的某个位置。如果使用EnumType.STRING,则源中的顺序无关紧要。只有当有人彻底删除某个值时,才会出现问题。
@Entity
class Answer {
   @Column(name = "explanation")
   private String explanation

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