java

凌君梦月 2014-08-26 11:59:36
j运行程序出现这个错误:ava.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Set
cn.hckygl.serviceImpl.PrivilegeServiceImpl.getByIds(PrivilegeServiceImpl.java:46)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
$Proxy26.getByIds(Unknown Source)
cn.hckygl.action.InformationsAction.privilege(InformationsAction.java:115)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
基本类实现这个public List<T> getByIds(Long[] ids) {
// TODO Auto-generated method stub
return getSession().createCriteria(clazz)//
.add(Restrictions.in("id", ids)).list();
}





在Service实现类中调用上面的方法
@Resource
private PrivilegeDao privilegeDao;
@SuppressWarnings("unchecked")
public Set<Privilege> getByIds(Long[] privilegeIds) {
return (Set<Privilege>) privilegeDao.getByIds(privilegeIds);
}




在Action类中使用
private Long[] privilegeIds;
/*设置权限*/
public String privilege(){
//从数据库中获取源对象
Informations informations = informationsService.getById(model.getId());
//设置要修改的属性
//informations.setPrivilege(privilegeService.getByIds(privilegeIds));
informations.setPrivilege(privilegeService.getByIds(privilegeIds));
//更新
informationsService.update(informations);
return "toList";
}



实体类是private String description;//简介
private String tel;//联系电话
private String emile;
private String postcode;//邮编
private Set<Person> person=new HashSet<Person>();//科研人员
private Set<SubordinateDepartments> subordinateDepartments=new HashSet<SubordinateDepartments>();//下属科室
private Set<Privilege> privilege = new HashSet<Privilege>();

我测试我jsp是<body>
<s:form action="informationsAction_privilege">
<s:hidden name="id"></s:hidden>
<s:checkboxlist name="privilegeIds" list="#privilegeList" listKey="id" listValue="name">
</s:checkboxlist>
<s:submit value="提交"></s:submit>
</s:form>
</body>

知道的就告诉我下。。我知道类型转换问题可就是改不过来。。帮帮忙
...全文
118 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
姜小白- 2014-08-26
  • 打赏
  • 举报
回复

public Set<Privilege> getByIds(Long[] privilegeIds) {
    return (Set<Privilege>) privilegeDao.getByIds(privilegeIds);
}
(Set<Privilege>) privilegeDao.getByIds(privilegeIds); List 不可以直接强转为Set 类型完全一致的话,可以通过

Set<Privilege> set = new HashSet<Privilege>();
set.addAll(privilegeDao.getByIds(privilegeIds));
来转换
枫醉秋 2014-08-26
  • 打赏
  • 举报
回复
类型转换失败了,按照楼上的转换一下
lucky_love123 2014-08-26
  • 打赏
  • 举报
回复
Set<Privilege> set = new HashSet(); for (int i = 0; i <privilegeDao.getByIds(privilegeIds).size(); i++) { set.add((Privilege)list.get(i)); } 整理整理试试
-江沐风- 2014-08-26
  • 打赏
  • 举报
回复
这种问题的解决一般都是看提供的错误信息,一般情况下,错误信息包含了你想要知道的信息;

51,412

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧