对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);
我写了一个查询来查找模型和他的链接产品。现在,当我使用 "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);