如何获得订单地图王氏AliasToEntityMapResultTransformer?(How t

2019-10-17 17:57发布

我用这个东西来获取列表>,这是非常有趣的操作像“的resultSet” DATAS。 我的方法是:requeteSQL.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);

当我执行此查询与sqldevelopper,我已经获得国家为例| 现场1 | 现场2行1 | 值1 | 值2

但我的地图是不是在右击订单? 如何解决这个问题? 为什么我的地图具有字段2 =值2,字段1 =值顺序?

Answer 1:

因为哈希表,你怎么能指望的顺序检索,如果想为了检索请实现自己的使用ResultTransformer将返回LinkedHashMap的如

public class AliasToEntityOrderedMapResultTransformer extends AliasedTupleSubsetResultTransformer {

public static final AliasToEntityOrderedMapResultTransformer INSTANCE = new AliasToEntityOrderedMapResultTransformer();

/**
 * Disallow instantiation of AliasToEntityOrderedMapResultTransformer .
 */
private AliasToEntityOrderedMapResultTransformer () {
}

/**
 * {@inheritDoc}
 */
public Object transformTuple(Object[] tuple, String[] aliases) {
            /* please note here LinkedHashMap is used so hopefully u ll get ordered key */
    Map result = new LinkedHashMap(tuple.length);
    for ( int i=0; i<tuple.length; i++ ) {
        String alias = aliases[i];
        if ( alias!=null ) {
            result.put( alias, tuple[i] );
        }
    }
    return result;
}

/**
 * {@inheritDoc}
 */
public boolean isTransformedValueATupleElement(String[] aliases, int tupleLength) {
    return false;
}

/**
 * Serialization hook for ensuring singleton uniqueing.
 *
 * @return The singleton instance : {@link #INSTANCE}
 */
private Object readResolve() {
    return INSTANCE;
}
}

顺便说一下你的逻辑不应该取决于它出现在最终映射键的顺序。



文章来源: How to get an order Map wih AliasToEntityMapResultTransformer ?