读书人

用Hibernate投射INT字段到EnumSet

发布时间: 2012-10-25 10:58:57 作者: rapoo

用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

读书人网 >软件架构设计

热点推荐