繁体   English   中英

ORDER BY在JPQL查询中不起作用

[英]ORDER BY Not Working in JPQL Query

我有以下基于用户部门和建筑物返回HashMap的方法。 我想根据用户名订购ASC

private HashMap<Long, String> getCriticalPde(long departmentId, long buildingId) {
    HashMap<Long, String> map = new HashMap<Long, String>();
    Query query = emf
        .createEntityManager()
        .createQuery(
            "SELECT parent FROM Table1 parent WHERE parent.id NOT IN "
            + "(SELECT chldQry.userId FROM Table2 chldQry "
            + "WHERE chldQry.departmentId = :departmentId "
            + "AND chldQry.buildingId = :buildingId)"
            + "ORDER BY parent.userName ASC");
        query.setParameter("departmentId", departmentId);
        query.setParameter("buildingId", buildingId);
        List<User> list= (List <User>) query.getResultList();
        for (User user : userList) {
            map .put(user.getId(), user.getName());
        }
    return map;
}

但是,当我的地图返回时,它仍然按UserId排序。 在Toad / Squirrel / etc中运行时,此脚本可以正确执行ORODER BY。 有任何想法吗?

您正在失去顺序,因为您使用的是HashMap,它无法保证迭代的顺序。 尝试改用LinkedHashMap,它将保留原始顺序。

该命令绝对有效,不是HashMap 哈希图不保留插入顺序。 改用LinkedHashMap

您正在检索有序列的结果列表,然后存储在无序列的哈希图中。 使用有序集合来存储用户。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM