首先这里定义一个enum,表示逻辑的“是”、“否”、“未知”三种状态:
public enum LogicType {
NO,//否
YES,//是
UNKNOWN;//不确定
@Override
public String toString(){
switch(this){
case NO:
return "否";
case YES:
return "是";
case UNKNOWN:
return "未知";
}
return super.toString();
}
}
如果不喜欢在Override的时候使用switch(..) case的结构,可以修改定义为:
public enum LogicType {
NO("否"),//否
YES("是"),//是
UNKNOWN("未知");//不确定
private String name = null;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
LogicType(String name){
this.name = name;
}
@Override
public String toString(){
return this.name;
}
}
最后需要说的是,如果我们使用hibernate来影射某一数据列为enum类型的话,如果选择自动列数据类型转换,则:
如果数据库的字段为varchar2,则存储相应的名字到数据库这里是COL,反之,如果数据库的字段类型为number
则会调用emun.ordinal()来存储数据。为了改变ordinal()的返回类型,我们可以变通的加入code到enum中:然后
设计构造方法:LogicType(name,code){this.name=name;this.code=code;};然后在需要存储的时候直接调用
getCode()来得到相应的值,但遗憾的是如果使用save(Object obj)方法似乎不能存储合适的数据(如果obj有个field)
为enum类型的话。