读书人

[Ljava.lang.Object; cannot be cast

发布时间: 2012-04-25 19:32:32 作者: rapoo

[Ljava.lang.Object; cannot be cast to 。。。错误,为啥能取值不能get?
_list取到值了,但是取出来一直有问题,一get就跳转异常,快疯了,是三张表的联合查询


Java code
//servicepublic List<Evaluatescholarship> find(String year,String major,Timestamp startTime,Timestamp endTime)throws BusinessException{        StringBuffer queryStringBuffer = new StringBuffer("from Evaluatescholarship e,Stubasicinfo s,Majorinfo m where e.stubasicinfo = s.stbStuNo and s.majorinfo = m.mno");                System.out.println("servicebefore");        String[] params = new String[] {year, major};         if(!"".equals(year)){            queryStringBuffer.append(" and s.syear = ? ");//            queryStringBuffer.append(" syear="+"'"+year+"'");            if (!"".equals(major)) {                //queryStringBuffer.append(" and e.stubasicinfo.majorinfo.mname = ? ");                queryStringBuffer.append(" and m.mname = ? ");//                queryStringBuffer.append(" and majorinfo.mname="+"'"+major+"'");//                        +" and estartTime between "+"'"+startTime+"'"+" and "+"'"+endTime+"'"+" and eendTime between "+"'"+startTime+"'"+" and "+"'"+endTime+"'"+" ");                    }            else {//                queryStringBuffer.append(" and estartTime between "+"'"+startTime+"'"+" and "+"'"+endTime+"'"+" and eendTime between "+"'"+startTime+"'"+" and "+"'"+endTime+"'"+" ");            }                    }        else {//            queryStringBuffer.append(" estartTime between "+"'"+startTime+"'"+" and "+"'"+endTime+"'"+" and eendTime between "+"'"+startTime+"'"+" and "+"'"+endTime+"'"+" ");        }        System.out.println(queryStringBuffer);        List<Evaluatescholarship> _list =  this.evaluateScholarshipDao.find(queryStringBuffer.toString(), params);        if(null == _list) {            throw new BusinessException("无法取到值");        }         return _list;    }


Java code
//daopublic List<Evaluatescholarship> find(String queryString, String[] params){        System.out.println("daobefore");        List list = this.dataAccessUtil.find(queryString,params);        System.out.println(list.isEmpty());        return (List<Evaluatescholarship>)list;    }


Java code
//actionpublic String findList() throws Exception{        String currentTime = TimeGenerator.getCurrentTime();        try {            /*System.out.println("actionbefore"+evaluatescholarship.getStubasicinfo().getSyear().toString());                        System.out.println(evaluatescholarship.getStubasicinfo().getMajorinfo().getMname().toString());*/            List<Evaluatescholarship> _list = this.evaluateScholarshipService.find(evaluatescholarship.getStubasicinfo().getSyear(),evaluatescholarship.getStubasicinfo().getMajorinfo().getMname(),startTime,endTime);            System.out.println("evaluateScholarAction size="+_list.size());            if (null == _list) {                return "input";            } else {                                        System.out.println("action getEno = "+(((Evaluatescholarship)(_list.get(0))).getEno().toString()));//一执行到这句就异常,明明list值取出来了的                logger.info(currentTime + " 用户【" + _list + "】登录:");                ActionContext.getContext().put("esList", _list);                            return "success";            }        } catch (Exception e) {//            logger.info(" ******************** Method: [execute] ******************** " + //                    "throw an exception,the reason may be username or password is wrong!");            e.printStackTrace();            return "input";        } 



报的错是java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.xnjd.scholarship.model.Evaluatescholarship





[解决办法]
这个错好像是类型转换失败。是object类型转成model出错了
[解决办法]
List list = this.dataAccessUtil.find(queryString,params);
看看list里面装的到底是不是Evaluatescholarship对象,因为你没有贴出dataAccessUtil里面的代码,看错误提示,list里面应该装的是Object对象,并且不能强制转化成Evaluatescholarship对象!

读书人网 >Java Web开发

热点推荐