【发布时间】:2015-06-22 10:48:58
【问题描述】:
我想用 hibernate 映射 Enum 的值,以便从 DB 中获取数据。
在数据库列**EASE_RATING** is number[1]。我能够将数据库中的数据保存为数字。
但是当我通过 Criteria.list() 检索数据时,我得到 easeRating=Two 而不是 easeRating=2。
我的问题是如何以序数或枚举值的形式获取数据。
public enum Rating {
Zero(0), // [No use] Taken Zero B'Coz Ordinal starts with 0
One(1),
...
Five(5);
private final int value;
Rating(int value){
this.value = value;
}
public int getValue(){
return this.value;
}
public static Rating getRating(int x) {
switch(x) {
case 1: return One; ...
case 5: return Five;
}
return One;
}
}
POJO:
@Enumerated(EnumType.ORDINAL)
@Column(name = "EASE_RATING", nullable = false)
private Rating easeRating;
更新
我想要 Hibernate List() 中 int[ordinal()] 中的这个值。 我正在通过休眠访问 DB。
List<CustomerFeedback> result = criteria.list();
我可以通过**getValue()**实现价值
System.out.println(Rating.Five.getValue()); // 5
System.out.println(Rating.Five); // Five
System.out.println(Rating.Five.name()); // Five
但是我如何在 Hibernate list() 中得到这个
【问题讨论】:
-
该属性的类型为 Rating。所以你得到的不是“二”。这是评级
Rating.Two的实例。你可以在这个实例上调用 getValue() 来获取它的值。