use*_*638 0 java jboss hibernate
我已经使用这些东西来获取List>,这对于像"resultSet"这样操作数据非常有趣.我的方法是:requeteSQL.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
当我用sqldevelopper执行这个查询时,我得到了例子| Field 1 | Field 2 Line 1 | 价值1 | 价值2
但是我的地图不符合规定?如何解决这个错误?为什么我的地图按顺序有Field2 = Value2,Field1 = Value1?
因为它是哈希映射,你怎么能期望订单检索,如果想要订单检索请实现你自己的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;
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,你的逻辑不应该依赖于它在结果映射中出现的键的顺序.