Hibernate 在hql中对多个列进行排序
我写了一个查询,查找模型和他的链接产品。现在,当我使用“orderbymodel.name,p.number”语句对数据进行排序时,模型将正确排序。但对产品的分类并没有发生。我如何解决这一问题:模型将被排序,模型中的产品也被排序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
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可以是相同的值。