java - 如何使用 AliasToEntityMapResultTransformer 获取订单映射?

标签 java hibernate jboss

我用这个东西来获取一个列表>,这对于操作“结果集”这样的数据非常有趣。 我的方法是: requeteSQL.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);

当我使用 sqldevelopper 执行此查询时,我得到了示例 |领域 1 |场2 1 号线 |值 1 |值 2

但是我的 map 顺序不正确? 如何修复此错误?为什么我的 map 按此顺序 Field2 = Value2、Field1 = Value1 ?

最佳答案

因为它是 HashMap ,你怎么能期望订单检索,如果想要订单检索请实现你自己的 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;
}
}

顺便说一句,您的逻辑不应取决于结果 map 中出现的键的顺序。

关于java - 如何使用 AliasToEntityMapResultTransformer 获取订单映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15108267/

相关文章:

java - 返回类型错误信息

java - 在 64 位机器上,Java 中 int 的大小是 32 位还是 64 位?

java - 在 JBoss 4.2.x 上升级到 Quartz 1.6

java - EJB限制: compromise component distributability

java - JBoss 上的 JBPM 安装抛出 NoClassDefFoundError : org/apache/log4j/Category

java - 如何摆脱元素周围的默认白色 "space"?

java - 如何在 C# 中创建类似的 JAVA SWING GroupBox

Java Spring Hibernate 通信链路故障

java.sql.SQL语法错误异常 : Table 'mydb.alien' doesn't exist

java - Spring 4 + Hibernate 5 = org.springframework.orm.jpa.EntityManagerHolder 无法转换为 org.springframework.orm.hibernate5.SessionHolder