string sql="select orderId,goods.goodsId,goodsName,nums,goodsPrice 
from goods,orderdetail where goods.goodsId=orderdetail.goodsId 
and orderId="+orderId;
List<OrderShowGoodsUnitBean> list=session.createSQLQuery(sql).list();两表关联查询,其中OrderShowGoodsUnitBean并没有相应的XXX.hbm.xml
 
for(int i=0;i<list.size();i++){    System.out.println(list.get(i).getGoodsName());
}以上代码已经经过简化,以更好的描述我的问题。就在上面这个getGoodsName()处,报错。
报错的大意是 Object cannot cast to orderDetailBeanList。我需要将list里面的Object 转换成 OrderShowGoodsUnitBean 
但不知道怎样实现。求大神HELP。
附上OrderShowGoodsUnitBean类,其中省略掉get set方法:@Component
public class OrderShowGoodsUnitBean {
private int orderId;
private int goodsId;
private String goodsName;
private int nums;
private float goodsPrice;
}
     JAVA HIBERNATESSHSTRUTSJAVAEE

解决方案 »

  1.   

    根据你的情况呢我建议你使用createQuery来执行HQL 
    这样你就能使用List<OrderShowGoodsUnitBean> list来接收query.list(),循环后可以用OrderShowGoodsUnitBean接收,也可以直接get值!!!记住是HQL如果你坚持使用createSQLQuery那也没关系
    只不过createSQLQuery执行的SQL返回的list里面的每一个值是一个Object数组(就是Object[] obj={你每个字段的值},你可以debug看看)
    通过这种方式你是不能强行转换成你的OrderShowGoodsUnitBean对象的(因为里面是数组),最多只能再去循环里面的每一个数组把值set到你的OrderShowGoodsUnitBean对象中,比较麻烦!既然使用hibernate来做查询的话还是推荐使用createQuery来做!!
    希望可以帮到你~
      

  2.   

    没怎么看代码,但是一开始就看到了string,楼主确定是小写?
    建议,自己好好把代码检查一遍了看能不能有什么新发现!
      

  3.   

    回复 #2 楼的 ganshenml 兄弟
         是String...发帖的时候手写的,失误。。
         好的,我再看看代码
      

  4.   


    楼主的list查出来应该是Object[] 数组对象把,要转成Bean的话要取出来重新封装。