对 hql 中的多列进行排序

吉米·D

我写了一个查询来查找模型和他的链接产品。现在,当我使用“order by model.name, p.number”语句对数据进行排序时,模型将被正确排序。但是对产品的分类并没有发生。如何解决此问题,以便对模型进行排序,并对模型中的产品也进行排序。

Session session = sharedData.getFactory().openSession();

        Query query = session.createQuery("select distinct model FROM Model model join fetch model.products p "
                + "join p.itemsInProducts iip " + "join iip.company iipc " + "join iip.item i "
                + "join model.company modelc " + "Join p.company pc " + "where "
                + "model.active = '1' and modelc.companyId = '" + companyId +"' " + "and p.active = '1' and pc.companyId = '" + companyId +"' "
                + "and i.id = '"+ itemID + "' " + "and iip.active = '1' and iipc.companyId = '" + companyId +"' order by model.name, p.number");

        List<Model> models = query.list();

        session.close();    

模型实体有一个包含产品的 Set products 变量。

此外,仅在 p.number 上排序时什么也没有发生。产品对象的顺序是随机排列的。

吉米·D

用Java比较器对集(不是用sql排序)排序。

TreeSet<Product> orderList = new TreeSet<>(new Comparator<Product>() {

            @Override
            public int compare(Product prod1, Product prod2) {
                return prod1.getNumber().compareTo(prod2.getNumber());
            }
        });

        orderList.addAll(result);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章