首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

用Hibernate投射INT字段到EnumSet

2012-10-25 
用Hibernate映射INT字段到EnumSet上次提到了把数据库的INT字段映射到Java里的Enum,但这样的字段只表示保存

用Hibernate映射INT字段到EnumSet
上次提到了把数据库的INT字段映射到Java里的Enum,但这样的字段只表示保存一个值。以前用C时经常会写这样的代码:

/* * Encode the EnumSet into an integer based on bit on/off */private int encode(EnumSet<T> set) {    int ret = 0;    for (T val : set) {        ret |= 1 << val.getCode();    }    return ret;}/* * Decode the integer back to a EnumSet based on bit on/off */private EnumSet<T> decode(int code) {Map<Integer, T> codeMap = new HashMap<Integer, T>();for (T val : EnumSet.allOf(enumClass)) {codeMap.put(val.getCode(), val);}      EnumSet<T> result = EnumSet.noneOf(enumClass);    while (code != 0) {        int ordinal = Integer.numberOfTrailingZeros(code);        code ^= Integer.lowestOneBit(code);        result.add(codeMap.get(ordinal));    }    return result;}


相关文章:
用Hibernate映射INT字段到枚举类型:http://voidtech.iteye.com/blog/641347

热点排行