0

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

我的模型有注释:

@Enumerated(EnumType.STRING)

我的枚举看起来像:

public enum SomeEnum {

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

   private int value;

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

}

我希望我能以某种方式将枚举的整数“值”存储在我的数据库中,然后当休眠将我的模型加载到 java 类中时,以某种方式再次使用枚举的值将其解析回。

我不想使用序数值,因为它不够稳定。而且我也不想使用 mysql 枚举类型,因为它无缘无故地将我与 mysql 联系在一起。

那么这可能吗?

4

3 回答 3

2

我想你总是可以映射你自己的用户类型: http ://alenovarini.wikidot.com/mapping-a-custom-type-in​​-hibernate

于 2012-04-09T15:32:57.860 回答
2

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

于 2012-04-09T15:33:09.237 回答
0

似乎有可能。尝试了以下提示:http ://blog.tamashumi.com/2013/06/grails-enum-custom-database-value.html并且似乎正在工作:

enum DayTime {
    Morning(0),Noon(1),AfterNoon(2),Night(3)
    final int id
    private DayTime(int id) { this.id = id }
}

然后在您的域类中:

DayTime dayTime
于 2014-03-24T00:53:29.753 回答