Hibernate使用Enum,int或String存储值

时间:2016-12-12 11:36:18

标签: hibernate enums store bigdata

对于我的实体,我应该使用哪一个来存储状态,类型等值??

我使用枚举定义了我的状态,类型等...许多预定义的系统数据到我的系统。在短期内,我计划将系统迁移到大数据数据库。那么,在存储这些数据的同时我该怎么办?

  • 没有争议,我不能使用@Convert,因为它不受envers的支持。
  • 重要的未来发展和系统可能需要更新枚举,所以我不能使用序数。

  • 我的预定义枚举已存在,我可以为每个枚举分配一个ID。因此,需要将实体需要定义为int。 (作为枚举管理,存储为int id。)

1 个答案:

答案 0 :(得分:0)

试试这个?

public enum Status {
    NORMAL(0), BANNED(1); // modify it

    int code;

    Status(int code) {
        this.code = code;
    }

    public static Status fromCode(int code) {
        switch (code) {
            case 0:
                return NORMAL;
            case 1:
                return BANNED;
            default:
                throw new IllegalArgumentException();
        }
    }

    public int getCode() {
        return code;
    }
}

然后,假设您将Status存储在名为“status”的对象变量中:

public Status getStatus() {
    return Status.fromCode(status);
}

public void setStatus(Status status) {
    this.status = status.getCode();
}

并将数据库中的状态存储为int。