检索数据库查询Java EE,hibernate返回的数据

时间:2012-09-06 17:20:51

标签: hibernate list java-ee methods return-value

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

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>并且很容易检索数据但是这次我在复杂的查询前面绘制图表

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

结果列表中的元素是对象数组长度为2(select语句中的项数)。数组的第一个元素是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)