0

Hibernateのクエリから情報を取得するのに問題があります。私のクラスダオでは、このような機能があります。

@SuppressWarnings("unchecked")
public List<String> getOcurrencesPerMonth(){
        List<String> dataOcurrences = (List<String>) getHibernateTemplate().execute (new HibernateCallback() {
            public Object doInHibernate(Session session) {
                Query query = session.createQuery("select concat(year(ror.created),'/',month(ror.created)), dt.name, count(distinct ror.id) from RawOccurrenceRecord ror, DataProvider dt" +
                        " where ror.dataProviderId = dt.id" +
                        " group by month(ror.created),ror.dataProviderId");
                return query.list();
            }
        });

    ArrayList<String> dataO = new ArrayList<String>();  

    Iterator<String> iterator = dataOcurrences.iterator();
    while (iterator.hasNext()) {
        dataO.add(iterator.next());
    }

    return dataO;
}

リストをビューに渡し、jspでac:forEachを使用して結果を表示しますが、Ljava.lang.Object;@1659f66のような結果しかありません。

MySQLでの私のクエリは

SELECT CONCAT(YEAR(raw_occurrence_record.created),'/',MONTH(raw_occurrence_record.created)), data_provider.name, COUNT(DISTINCT raw_occurrence_record.id) FROM raw_occurrence_record, data_provider WHERE raw_occurrence_record.data_provider_id = data_provider.id GROUP BY month(raw_occurrence_record.created), raw_occurrence_record.data_provider_id;

そして結果は次のようになります

2012/12 | POL | 15
2013/1  | JKL | 45
2013/1  | GTK | 30

¿ビューのクエリの各列のデータを取得するにはどうすればよいですか?

4

1 に答える 1

1

これは、クエリがを返さずList<String>、を返すためList<Object[]>です。 [Ljava.lang.Object;@65690726これは、配列でtoString()を呼び出したときに得られるものであり、最終的には、JSPを出力しようとしたときに実行されます。

あなたはこのようなものが欲しいです(建築的に言えば、*-DAOと呼ばれるクラスでは一般的にこれを行うことはありません!)

for (Object[] result: dataOccurences) {
  data0.add(result[0].toString() + "|" + result[1].toString() + "|" + result[2].toString());
}
于 2013-01-17T17:53:12.980 に答える