我有这个返回列表的方法:
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>
并且很容易检索数据但是这次我在复杂的查询前面绘制图表
我怎样才能做到这一点?
答案 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)