0

我有这个返回列表的方法:

public List getPourcentageDivision() {
    List cs = null;
    try {                       

        org.hibernate.Transaction tx = session.beginTransaction();

        Query q = session.createSQLQuery("SELECT u.division,COUNT(c.id) AS nb_commandes FROM utilisateur u LEFT OUTER JOIN commande c ON c.utilisateur_id = u.id GROUP BY u.division");
        if(q.list().size() > 0)
        cs = q.list();            

        session.clear();
        session.flush();
    } catch (Exception e) {

        e.printStackTrace();

    }
    return cs;
}

如您所见,每一行都返回两个属性,就像在此查询中一样:

SELECT u.division,COUNT(c.id)

你能记得我如何从这个列表中访问这些数据吗,因为我养成了一个习惯,如果有的话,List<MyClass>很容易检索数据,但这次我面对一个复杂的查询来绘制图表

我怎样才能做到这一点?

4

1 回答 1

1

结果列表中的元素是长度为 2 的对象数组(选择语句中的项目数)。数组的第一个元素是表示的值u.division,第二个匹配到COUNT(c.id)

for (Object[] row: (List<Object[]>) result ) {
    Object division = row[0];
    Object count = row[1];
}

根据提供的信息,无法分辨division. 可以通过添加以下内容来观察返回值的类型(当然仅适用于非空值):

System.out.println(division.getClass()); //u.division
System.out.println(count.getClass()); //COUNT(c.id)
于 2012-09-07T04:14:54.743 回答