Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 在hql中对多个列进行排序_Hibernate_Java 8_Sql Order By_Hql - Fatal编程技术网

Hibernate 在hql中对多个列进行排序

Hibernate 在hql中对多个列进行排序,hibernate,java-8,sql-order-by,hql,Hibernate,Java 8,Sql Order By,Hql,我写了一个查询,查找模型和他的链接产品。现在,当我使用“orderbymodel.name,p.number”语句对数据进行排序时,模型将正确排序。但对产品的分类并没有发生。我如何解决这一问题:模型将被排序,模型中的产品也被排序 Session session = sharedData.getFactory().openSession(); Query query = session.createQuery("select distinct model FROM Model m

我写了一个查询,查找模型和他的链接产品。现在,当我使用“orderbymodel.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();    
会话会话=sharedData.getFactory().openSession(); Query Query=session.createQuery(“从模型模型连接获取模型中选择不同的模型p” +“加入p.itemsInProducts iip”+“加入iip.company iipc”+“加入iip.item i” +“join model.company modelc”+“join p.company pc”+“where” +“model.active='1'和modelc.companyId='”+companyId+“+”和p.active='1'和pc.companyId='“+companyId+”” +“和i.id=”“+itemID+”“+”和iip.active=”1“和iipc.companyId=”“+companyId+”“order by model.name,p.number”); List models=query.List(); session.close(); 模型实体有一个集合products变量,该变量包含产品


此外,当仅按p.编号排序时,不会发生任何情况。产品对象的顺序是随机排序的。

不是用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);
TreeSet orderList=新树集(新比较器(){
@凌驾
公共整数比较(产品prod1、产品prod2){
返回prod1.getNumber().compareTo(prod2.getNumber());
}
});
orderList.addAll(结果);

查询看起来不错。。。您知道,只有当两行的
model.name
相同时,
p.number
才有意义,对吗?对于不同的产品,model.name可以是相同的值。