对hql中的多列进行排序

Sort on multiple columns in hql

我写了一个查询来查找模型和他的链接产品。现在,当我使用 "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 上排序时也没有任何反应。产品对象顺序随机排列。

不是在 sql 中而是使用 Java 比较器对集合进行排序。

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);