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;
}

ご覧のとおり、すべての行は、このクエリの場合と同様に2つの属性を返します。

SELECT u.division,COUNT(c.id)

このリストからこのデータにアクセスする方法を覚えていますか?私は持っていれば習慣になり、List<MyClass>データを取得するのは簡単でしたが、今回はチャートを描くための複雑なクエリの前にいます

どうすればこれを達成できますか?

4

1 に答える 1

1

結果リストの要素は、オブジェクト配列の長さが2(selectステートメントの項目数)です。配列の最初の要素はで示される値でu.divisionあり、2番目の要素はに一致しますCOUNT(c.id)

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

提供された情報では、のタイプを区別することはできませんdivision。戻り値のタイプは、以下を追加することで確認できます(もちろん、null以外の値に対してのみ機能します)。

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