HQL - 两个相同查询之间的差异

时间:2012-04-04 11:06:13

标签: java hibernate hql

为什么此查询正常工作:

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中,所有列都是正确的。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:2)

查询select tab.col1, tab.col2, tab.col3的结果返回包含所选字段的对象数组列表,即col1,col2&amp; COL3。

然后从对象数组中,您可以按索引提取字段。

for(Object[] field : dataList){

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

}