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

我相信第二个 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 回答