这是我的枚举:
package enums;
public enum SessionType {
SESSION_NORMAL(12), SESSION_PERFECT(5), SESSION_SOLO(1);
private int value;
private SessionType(int value) {
this.setValue(value);
}
public void setValue(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public String toString(){
return this.name();
}
}
我有一个带有属性类型的模型类Session:
@Required
@Enumerated(EnumType.STRING)
@Column(name="type")
private SessionType type;
我想这样做一个查询:
Session.find("type.value = 1");
问候。
答案 0 :(得分:1)
默认情况下,枚举名称存储在数据库中,除非您有一些包装器或保存实际值的东西。
因此,您的查询应该类似于以下内容:
Session.find("type='SESSION_SOLO'");
答案 1 :(得分:1)
您无法通过SQL查询访问枚举中的值,但您可以使用枚举的Ordinal值将其存储在带有注释的数据库中:
@Enumerated(EnumType.ORDINAL)
现在会返回1,2或3,但你可以重新映射这些值(所以代替1,5,12你使用1,2,3)或者只是在枚举中添加一些额外的条目,直到你得到你想要的值(如果它对系统的其余部分如此重要,那么值为1,5,12)