Java 是否可以使用整数值而不是EnumType.STRING或ORDINAL保存枚举?

Java 是否可以使用整数值而不是EnumType.STRING或ORDINAL保存枚举?,java,spring,hibernate,Java,Spring,Hibernate,我有一个存储枚举字符串值的mysql表 我的模型具有以下注释: @Enumerated(EnumType.STRING) 我的枚举看起来像: public enum SomeEnum { BLUE(0), YELLOW(1), RED(2), private int value; public SomeEnum(int value) { this.value = value; } } 我希望我能以某种方式将枚举的整数“值”存储在数据库中,

我有一个存储枚举字符串值的mysql表

我的模型具有以下注释:

@Enumerated(EnumType.STRING)
我的枚举看起来像:

public enum SomeEnum {

   BLUE(0),
   YELLOW(1),
   RED(2),

   private int value;

   public SomeEnum(int value) {
     this.value = value;
   }

}
我希望我能以某种方式将枚举的整数“值”存储在数据库中,然后在hibernate将我的模型加载到java类中时,以某种方式使用枚举的值重新解析它

我不想使用序数值,因为它不够稳定。我也不想使用mysql枚举类型,因为它毫无理由地将我与mysql绑定在一起


那么这可能吗?

我想您可以随时映射自己的用户类型:

我想您可以随时映射自己的用户类型:

为什么不尝试使用int类型(未枚举)的字段,如果您想从现有的枚举类型获取/设置它呢?

为什么不尝试使用int类型(未枚举)的字段,如果您想从现有的枚举类型获取/设置它呢?

似乎这是可能的。尝试了以下提示:并且似乎有效:

enum DayTime {
    Morning(0),Noon(1),AfterNoon(2),Night(3)
    final int id
    private DayTime(int id) { this.id = id }
}
然后在域类中:

DayTime dayTime

看来这是可能的。尝试了以下提示:并且似乎有效:

enum DayTime {
    Morning(0),Noon(1),AfterNoon(2),Night(3)
    final int id
    private DayTime(int id) { this.id = id }
}
然后在域类中:

DayTime dayTime

Reference:Reference:这是唯一适用于所有JPA提供商的解决方案。这是唯一适用于所有JPA提供商的解决方案。