0

このクエリが正常に機能する理由:

Query query = session.createQuery("from Table tab");

そして、このクエリ:

Query query = session
  .createQuery("select tab.col1, tab.col2, tab.col3 from Table tab");

そして、それが私が両方のクエリで行っていることです:

dataList = query.list();
for (Table item : dataList)
{
  System.out.println(item.getCol1();
}

レポート:

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to table.Table
at test.TestCriteria.main(TestCriteria.java:35)

手伝ってくれる?

通常、テーブルはエンティティ Bean にマップされ、すべての列が正しいです。

4

2 に答える 2

3

私は2番目 queryを信じています。結果は次のList<Object[]>とおりです。

Object[] row = (Object[]) dataList.get(i);
Object col1Value = row[0];
Object col2Value = row[1];
Object col3Value = row[2];

Ljava.lang.Object;例外トレースでこの推測を観察しています。

于 2012-04-04T11:27:54.593 に答える
2

クエリの結果select tab.col1, tab.col2, tab.col3は、選択したフィールド (col1、col2、col3) を含むオブジェクト配列のリストを返します。

次に、オブジェクト配列から、インデックスでフィールドを抽出できます。

for(Object[] field : dataList){

    col1 = field[0]; //-- Casting accordingly
     col2 = field[1]; 
     col3 = field[2]; 

}
于 2012-04-04T11:27:48.343 に答える