humnate中的Java枚举

jun*_*idp 1 java enums hibernate

我在MySQL表中有一个列,它有一个枚举变量:"questionTypes"

我将如何为此制作实体?

对于String,我这样做:

@Column(name = "explanation")

private String explanation

public String getExplanation() {
  return explanation;
}

public void setExplanation(String explanation) {
  this.explanation = explanation;
}
Run Code Online (Sandbox Code Playgroud)

我应该为枚举做什么?

Rei*_*eus 5

添加JPA的枚举注释(省略getters/setters):

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

   @Column(name = "questionType")
   @Enumerated(EnumType.STRING)
   private QuestionType type
}
Run Code Online (Sandbox Code Playgroud)

哪里QuestionType 是常规Java枚举.

  • 我会避免 EnumType.ORDINAL,因为它允许某人将另一个值放入枚举中除枚举列表末尾之外的其他位置。如果您使用 EnumType.STRING,则源中的顺序并不重要。只有当有人直接删除某个值时,您才会遇到问题。 (2认同)