Java 我的hibernate枚举是否工作正常/设置稳定?

Java 我的hibernate枚举是否工作正常/设置稳定?,java,hibernate,Java,Hibernate,我有一些属性是枚举,如在我的用户对象上: @Column(name = "user_status") private UserStatus userStatus; 其中UserStatus为: public enum UserStatus { NONE(0), MEMBER(1), PENDING(2); private long enumValue; UserStatus(long permissionValue) { this.e

我有一些属性是枚举,如在我的用户对象上:

@Column(name = "user_status")
private UserStatus userStatus;
其中UserStatus为:

public enum UserStatus {
    NONE(0),
    MEMBER(1),
    PENDING(2);

    private long enumValue;

    UserStatus(long permissionValue) {
        this.enumValue = permissionValue;
    }

    public long getEnumValue() {
        return enumValue;
    }

    public void setEnumValue(long enumValue) {
        this.enumValue = enumValue;
    }
}
在数据库(mysql)中,UserStatus列为:

user_status int(11) NOT NULL

我很困惑,这是怎么回事?hibernate是否足够聪明来映射这一点?

JPA规范定义了嵌入式枚举的行为,允许将其存储为基于整数的序号或字符串表示形式。默认行为是将枚举存储为整数序号。您可以通过
@Enumerated
注释控制此行为。在您的示例中,以下情况将导致JPA提供程序在DDL中生成varchar类型:

@Column(name = "user_status")
@Enumerated(STRING)
private UserStatus userStatus;
顺便说一句,在我看来,在数据库中存储整数序号是一个可怕的想法,因为如果重新排序/更改枚举成员,数据就会变成垃圾


参考:-第11.1.16节

我明白了,但是在我上面的代码中,我显式地设置了值,这样我就可以正确地控制它了?i、 我设置这个值会有帮助吗?好吧,你正在设置一个值。这是针对您添加的属性,而不是JPA知道的属性。