如何将query.list()结果对象转换为另一个对象?

时间:2014-11-19 20:04:32

标签: hibernate casting resultset

   StringBuffer sb = new StringBuffer();
   sb.append(" select * from Order where id in(:ids)");

   Query query = getSession().createSQLQuery(sb.toString());
   query.setParameterList("ids",ids);

   List<Order> results = (List<Order>)query.list();

越来越 java.lang.ClassCastException:[Ljava.lang.Object;无法转换为com.test.entity.Order

即使我尝试过如下,但没有改善,同样的错误。

 List<?> list = query.list();
final List<Order> results = new ArrayList<Order>(list.size());
for(final Object obj : list) {
    results.add((Order)obj);
}

最后我终于尝试了.addEntity(Order.class)。然后它正在工作。但是由于大量的结果和数据,它需要很长时间。请提出一些解决方案。

1 个答案:

答案 0 :(得分:0)

您的查询返回Order的字段数组,因此您无法直接将其强制转换为Order。可能的解决方案:

  1. 使用数组(例如,如果只需要几个字段)
  2. 添加addEntity(类),如指向@Zeus或将查询重写为'from Order ...'