JAVA异常:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.entity.Advertisem

publicStringfind_ad()throwsException{//action中的System.out.println("进入find_add");this.... public String find_ad() throws Exception {//action中的
System.out.println("进入find_add");
this.setCurrentPage(1);//设当前页为1
this.setPageSize(5);//设置每页显示条数,这两个当作参数传进去查出list
List list=advertisementDao.PageList(this.getCurrentPage(),this.getPageSize());
System.out.println(list.size());
/////////////////////下面的for是测试用来在后台输出的advertisement对象getAdName
for(int i=0;i<list.size();i++){
advertisement=(Advertisement)list.get(i);//在这一行发生错误???
System.out.println(advertisement.getAdName());
}
ActionContext.getContext().getSession().put("adlist", list);
//查询总条数
this.setTotalRows(advertisementDao.countRow());
//调用分页
pagination();
return SUCCESS;
}
/////////////////////////////DAO
public List PageList(int pageIndex,int pageSize){
System.out.println("进入PageList");
String sql="select top "+pageSize+" * from advertisement where adId not in (select top "+(pageIndex-1)*pageSize+" adId from advertisement)";
System.out.println("进入PageList2");
SessionFactory sf=this.getSessionFactory();
System.out.println("sf:"+sf==null);
Session session=sf.openSession();
System.out.println("session:"+session==null);
Transaction tx=session.beginTransaction();
List lt=session.createSQLQuery(sql).list();
tx.commit();
session.close();
}
return lt;
}

问题:在advertisement=(Advertisement)list.get(i);这里报下面的错误
,取出来的值在前台页面都是空的。错误:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.entity.Advertisement
展开
 我来答
希语稚听
2010-10-12 · 超过13用户采纳过TA的回答
知道答主
回答量:98
采纳率:0%
帮助的人:0
展开全部
(Advertisement)list.get(i)强制转换的类型 可能和advertisement变量类型不兼容。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
day小银月
2018-01-17
知道答主
回答量:34
采纳率:100%
帮助的人:8.5万
展开全部

多表联查,使用createSQLQuery(sql).list()实际上返回的是一个list集合中包含多条LObject对象(包含多条Object对象),我们要做的是把list遍历以后把每一个LObject转换成Object数组,然后进行遍历,把数组中每一个object对象转换成对应的String,Integer等等类型,然后再通过构造函数实例化转换成想要的对象,大白话可能不太好懂,读完上面的文字再看看代码就明白了,希望能有帮助,本人也是一个还没工作的新人程序员,也是在外网学到的解决办法,亲测好用:

List<Object> result=session.createSQLQuery(sql).list();

Iterator<Object> it = result.iterator();

while(it.hasNext()){

Object[] objs=(Object[])it.next();

String deptno=objs[0].toString();

String deptName=objs[1].toString();

int empNum=Integer.parseInt(objs[2].toString());

int maxSal=Integer.parseInt(objs[3].toString());

double avgSal=Double.parseDouble(objs[4].toString());

int formalNum=Integer.parseInt(objs[5].toString());

int leaveWorkingNum=Integer.parseInt(objs[6].toString());

int tryOutNum=Integer.parseInt(objs[7].toString());

HRMonthlyReport hr=new HRMonthlyReport

(deptno,deptName,empNum,maxSal,avgSal,formalNum,leaveWorkingNum,tryOutNum);

System.out.println("hr="+hr);

list.add(hr);

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
G_2002
2012-05-06
知道答主
回答量:8
采纳率:0%
帮助的人:6.5万
展开全部
你好我跟你遇到同样的问题。请问你是怎样解决的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式