【问题标题】:Java enum in hibernate休眠中的Java枚举
【发布时间】:2012-07-10 19:31:49
【问题描述】:

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

我将如何为此创建实体?

对于字符串我这样做:

@Column(name = "explanation")

private String explanation

public String getExplanation() {
  return explanation;
}

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

我应该为枚举做什么?

【问题讨论】:

    标签: java hibernate enums


    【解决方案1】:

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

    @Entity
    class Answer {
       @Column(name = "explanation")
       private String explanation
    
       @Column(name = "questionType")
       @Enumerated(EnumType.STRING)
       private QuestionType type
    }
    

    QuestionType 是一个常规的 Java 枚举。

    【讨论】:

    • 使用 EnumType.ORDINAL 为您的枚举保留一个数值,使用 EnumType.STRING 为您的枚举保留一个字符串值。我更喜欢后者,它更容易在数据库中读取。
    • 我会避免使用 EnumType.ORDINAL,因为它会允许某人在枚举列表末尾以外的某个位置放置另一个值。如果您使用 EnumType.STRING,则源中的排序无关紧要。只有当有人完全删除某个值时,您才会遇到问题。
    猜你喜欢
    • 2015-03-04
    • 2011-10-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多