求救!!!我快疯了java.lang.ClassCastException错误 你这个好像是cglib自动生成的吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ClassCastException这个异常一般是强制类型转换错误,不能强制转的时候你转了 t com.guandong.oa.manager.impl.PersonManagerImpl.addPerson(PersonManagerImpl.java:16) 看看这行ClassCastException是类型转换出了问题 把com.guandong.oa.manager.impl.PersonManagerImpl.java这个程序放上来看看撒。 如果你的com.guandong.oa.model.Person是用ejb3写的或hibernate 3.0 使用复合主键。就一定要实现serializable接口。否则就会出现:java.lang.ClassCastException错误~ java.lang.ClassCastException: com.guandong.oa.model.Person$$EnhancerByCGLIB$$d70c6a32 看上去是对象转换异常,楼主把从DAO里面取出来的数据放到List或者取出的时候的那段代码贴出来,否则怎么看? 对不起这两天去面试了,没上线,我现在把代码贴出来,可能有点多因为不知道那出错了package com.guandong.oa.manager.impl;import com.guandong.oa.PagerModel;import com.guandong.oa.SystemException;import com.guandong.oa.manager.PersonManager;import com.guandong.oa.model.Orgnization;import com.guandong.oa.model.Person;public class PersonManagerImpl extends AbstractManager implements PersonManager { public void addPerson(Person person, int orgId) { if(orgId == 0){ throw new SystemException("机构不允许为空!"); } person.setOrg( (Orgnization)getHibernateTemplate().load(Person.class,orgId) ); getHibernateTemplate().save(person); } public void delPerson(int personId) { getHibernateTemplate().delete( getHibernateTemplate().load(Person.class, personId) ); } public Person findPerson(int personId) { return (Person)getHibernateTemplate().load(Person.class, personId); } public PagerModel searchPersons() { return serachPaginated("from Person"); } public PagerModel searchPersons(int orgId) { return serachPaginated("select p from Person p where p.org.id = "+orgId); }} package com.guandong.oa.manager.impl;import com.guandong.oa.PagerModel;import com.guandong.oa.SystemException;import com.guandong.oa.manager.OrgManager;import com.guandong.oa.model.Orgnization;public class OrgManagerImpl extends AbstractManager implements OrgManager { public void addOrg(Orgnization org, int parentId) { if (parentId != 0) { org.setParent((Orgnization) getHibernateTemplate().load( Orgnization.class, parentId)); } getHibernateTemplate().save(org); org.setSn(org.getParent() == null ? ("" + org.getId()) : (org .getParent().getSn() + "_" + org.getId())); getHibernateTemplate().update(org); } public void delOrg(int orgId) { Orgnization org = (Orgnization) getHibernateTemplate().load( Orgnization.class, orgId); if (org.getChildren().size() > 0) { throw new SystemException("存在子机构不能删除!", "exception.org.del", org .getId()); } getHibernateTemplate().delete(org); } public Orgnization findOrg(int orgId) { return (Orgnization) getHibernateTemplate().load(Orgnization.class, orgId); } public void update(Orgnization org, int parentId) { if (parentId != 0) { org.setParent((Orgnization) getHibernateTemplate().load( Orgnization.class, parentId)); } getHibernateTemplate().update(org); } public PagerModel findOrgs(int parentId) { /*String selectCountHql = "select count(*) from Orgnization o where o.parent.id is null"; if (parentid != 0) { selectCountHql = "select count(*) from Orgnization o where o.parent.id =" + parentid; } // 获取总记录数 int total = ((Long) getSession().createQuery(selectCountHql) .uniqueResult()).intValue(); String selectHql = "select o from Orgnization o where o.parent.id is null"; if (parentid != 0) { selectHql = "select o from Orgnization o where o.parent.id =" + parentid; } //获取当前页的数据 List datas = getSession().createQuery(selectHql) .setFirstResult(offset) .setMaxResults(pagesize) .list(); PagerModel pm = new PagerModel(); pm.setTotal(total); pm.setDatas(datas); return pm;*/ if(parentId==0){ return serachPaginated("from Orgnization o where o.parent.id is null"); } return serachPaginated("from Orgnization o where o.parent.id = ?",parentId); }}web.xml:<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <!-- Standard Action Servlet Configuration (with debugging) --> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>2</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>2</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <!-- Standard Action Servlet Mapping --> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <filter> <filter-name>hibernateFilter</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>hibernateFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>Spring character encoding filter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> </filter> <filter-mapping> <filter-name>Spring character encoding filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>pagerFilter</filter-name> <filter-class>com.gudong.oa.web.PagerFilter</filter-class> </filter> <filter-mapping> <filter-name>pagerFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> struts-config.xml:<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"><struts-config> <form-beans> <form-bean name="orgForm" type="com.gudong.oa.web.forms.OrgActionForm"></form-bean> <form-bean name="personForm" type="com.gudong.oa.web.forms.PersonActionForm"></form-bean> </form-beans> <global-exceptions> <exception key="errors.detail" type="com.guandong.oa.SystemException" scope="request" path="/common/exception.jsp" handler="com.gudong.oa.web.SystemExceptionHandler"></exception> </global-exceptions> <global-forwards> <forward name="pub_add_success" path="/common/pub_add_success.jsp"></forward> <forward name="pub_del_success" path="/common/pub_del_success.jsp"></forward> <forward name="pub_update_success" path="/common/pub_update_success.jsp"></forward> </global-forwards> <action-mappings> <action path="/org" type="org.springframework.web.struts.DelegatingActionProxy" name="orgForm" scope="request" parameter="method" > <!--<exception key="errors.detail" type="com.guandong.oa.SystemException" scope="request" path="/common/exception.jsp"></exception> --><!--<forward name="exception" path="/common/exception.jsp"></forward> --><forward name="index" path="/org/index.jsp"></forward> <forward name="add_input" path="/org/add_input.jsp"></forward> <forward name="select" path="/org/select.jsp"></forward> </action> <action path="/person" type="org.springframework.web.struts.DelegatingActionProxy" name="personForm" scope="request" parameter="method" > <forward name="index" path="/person/index.jsp"></forward> <forward name="add_Input" path="/person/add_input.jsp"></forward> </action> </action-mappings> <message-resources parameter="MessageResources" /></struts-config>package com.gudong.oa.web.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.beanutils.BeanUtils;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;import com.guandong.oa.manager.OrgManager;import com.guandong.oa.model.Orgnization;import com.gudong.oa.web.forms.OrgActionForm;public class OrgAction extends DispatchAction { private OrgManager orgManager; @Override protected ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { OrgActionForm oaf = (OrgActionForm) form; request.setAttribute("pm", orgManager.findOrgs(oaf.getParentId())); int ppid = 0; if (oaf.getParentId() != 0) { Orgnization org = (Orgnization) orgManager.findOrg(oaf.getParentId()); Orgnization parent = org.getParent(); if (parent != null) { ppid = parent.getId(); } } request.setAttribute("ppid", ppid); if(oaf.isSelect()){ return mapping.findForward("select"); } return mapping.findForward("index"); } public ActionForward add_input(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { return mapping.findForward("add_input"); } public ActionForward add(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { OrgActionForm oaf = (OrgActionForm) form; Orgnization org = new Orgnization(); BeanUtils.copyProperties(org, oaf); orgManager.addOrg(org, oaf.getParentId()); return mapping.findForward("pub_add_success"); } public ActionForward del(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { OrgActionForm oaf = (OrgActionForm) form; orgManager.delOrg(oaf.getId()); // 异常方法二 // // try { // 手功异常 // orgManager.delOrg(oaf.getId()); // } catch (Exception e) { // ActionMessages msgs = new ActionMessages(); // // ActionMessage msg = new ActionMessage("errors.detail", // e.getMessage()); // // msgs.add("detail", msg); // // this.saveErrors(request, msgs); // // return mapping.findForward("exception"); // } return mapping.findForward("pub_del_success"); } public void setOrgManager(OrgManager orgManager) { this.orgManager = orgManager; }}package com.gudong.oa.web.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.beanutils.BeanUtils;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;import com.guandong.oa.manager.PersonManager;import com.guandong.oa.model.Person;import com.gudong.oa.web.forms.PersonActionForm;public class PersonAction extends DispatchAction { private PersonManager personManager; protected ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { request.setAttribute("pm", personManager.searchPersons()); return mapping.findForward("index"); } // 打开添加页面 public ActionForward addInput(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { return mapping.findForward("add_Input"); } //添加人员 public ActionForward add(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { PersonActionForm paf = (PersonActionForm)form; Person person = new Person(); BeanUtils.copyProperties(person, paf); personManager.addPerson(person,paf.getOrgId()); return mapping.findForward("pub_add_success"); } //删除人员 public ActionForward del(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { PersonActionForm paf = (PersonActionForm)form; personManager.delPerson(paf.getId()); return mapping.findForward("pub_del_success"); } public void setPersonManager(PersonManager personManager) { this.personManager = personManager; }} (Orgnization)getHibernateTemplate().load(Person.class,orgId) 看看类型转换是否正确 JAVA EE WEB <s:if> 比较Integer类型对象 关于JMS应用的实例? 知道下面的错误出在哪里了吗 struts+spring+hibernate整合框架遇到麻烦,请知道的帮忙解决,急!在线等!! jbpm工作流引擎问题 weblogic8.16 运行一段时间死机,高分求救。 哪位大神能讲下OAuth2.0 token生成算法 问一下,大家自己作开发都用什么操作系统 一个关于hibernate的问题 请问如何合并两段程序 高手请进。。。。。。 拜托了!!!
看看这行
ClassCastException是类型转换出了问题
看上去是对象转换异常,楼主把从DAO里面取出来的数据放到List或者取出的时候的那段代码贴出来,否则怎么看?
package com.guandong.oa.manager.impl;import com.guandong.oa.PagerModel;
import com.guandong.oa.SystemException;
import com.guandong.oa.manager.PersonManager;
import com.guandong.oa.model.Orgnization;
import com.guandong.oa.model.Person;public class PersonManagerImpl extends AbstractManager implements PersonManager { public void addPerson(Person person, int orgId) {
if(orgId == 0){
throw new SystemException("机构不允许为空!");
}
person.setOrg(
(Orgnization)getHibernateTemplate().load(Person.class,orgId)
);
getHibernateTemplate().save(person);
} public void delPerson(int personId) {
getHibernateTemplate().delete(
getHibernateTemplate().load(Person.class, personId)
);
} public Person findPerson(int personId) {
return (Person)getHibernateTemplate().load(Person.class, personId);
} public PagerModel searchPersons() {
return serachPaginated("from Person");
} public PagerModel searchPersons(int orgId) {
return serachPaginated("select p from Person p where p.org.id = "+orgId);
}}
import com.guandong.oa.SystemException;
import com.guandong.oa.manager.OrgManager;
import com.guandong.oa.model.Orgnization;
public class OrgManagerImpl extends AbstractManager implements OrgManager { public void addOrg(Orgnization org, int parentId) {
if (parentId != 0) {
org.setParent((Orgnization) getHibernateTemplate().load(
Orgnization.class, parentId));
}
getHibernateTemplate().save(org);
org.setSn(org.getParent() == null ? ("" + org.getId()) : (org
.getParent().getSn()
+ "_" + org.getId()));
getHibernateTemplate().update(org);
} public void delOrg(int orgId) {
Orgnization org = (Orgnization) getHibernateTemplate().load(
Orgnization.class, orgId);
if (org.getChildren().size() > 0) {
throw new SystemException("存在子机构不能删除!", "exception.org.del", org
.getId());
}
getHibernateTemplate().delete(org); } public Orgnization findOrg(int orgId) {
return (Orgnization) getHibernateTemplate().load(Orgnization.class,
orgId);
} public void update(Orgnization org, int parentId) {
if (parentId != 0) {
org.setParent((Orgnization) getHibernateTemplate().load(
Orgnization.class, parentId));
}
getHibernateTemplate().update(org);
} public PagerModel findOrgs(int parentId) {
/*String selectCountHql = "select count(*) from Orgnization o where o.parent.id is null"; if (parentid != 0) {
selectCountHql = "select count(*) from Orgnization o where o.parent.id ="
+ parentid;
} // 获取总记录数
int total = ((Long) getSession().createQuery(selectCountHql)
.uniqueResult()).intValue(); String selectHql = "select o from Orgnization o where o.parent.id is null"; if (parentid != 0) {
selectHql = "select o from Orgnization o where o.parent.id ="
+ parentid;
} //获取当前页的数据
List datas = getSession().createQuery(selectHql)
.setFirstResult(offset)
.setMaxResults(pagesize)
.list();
PagerModel pm = new PagerModel();
pm.setTotal(total);
pm.setDatas(datas);
return pm;*/ if(parentId==0){
return serachPaginated("from Orgnization o where o.parent.id is null");
}
return serachPaginated("from Orgnization o where o.parent.id = ?",parentId);
}}
web.xml:<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- Standard Action Servlet Configuration (with debugging) -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet> <!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping> <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>Spring character encoding filter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Spring character encoding filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>pagerFilter</filter-name>
<filter-class>com.gudong.oa.web.PagerFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>pagerFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean name="orgForm" type="com.gudong.oa.web.forms.OrgActionForm"></form-bean>
<form-bean name="personForm" type="com.gudong.oa.web.forms.PersonActionForm"></form-bean>
</form-beans>
<global-exceptions>
<exception key="errors.detail"
type="com.guandong.oa.SystemException"
scope="request" path="/common/exception.jsp"
handler="com.gudong.oa.web.SystemExceptionHandler"></exception>
</global-exceptions>
<global-forwards>
<forward name="pub_add_success" path="/common/pub_add_success.jsp"></forward>
<forward name="pub_del_success" path="/common/pub_del_success.jsp"></forward>
<forward name="pub_update_success" path="/common/pub_update_success.jsp"></forward>
</global-forwards>
<action-mappings>
<action path="/org"
type="org.springframework.web.struts.DelegatingActionProxy"
name="orgForm"
scope="request"
parameter="method"
>
<!--<exception key="errors.detail" type="com.guandong.oa.SystemException" scope="request" path="/common/exception.jsp"></exception>
--><!--<forward name="exception" path="/common/exception.jsp"></forward>
--><forward name="index" path="/org/index.jsp"></forward>
<forward name="add_input" path="/org/add_input.jsp"></forward>
<forward name="select" path="/org/select.jsp"></forward>
</action>
<action path="/person"
type="org.springframework.web.struts.DelegatingActionProxy"
name="personForm"
scope="request"
parameter="method"
>
<forward name="index" path="/person/index.jsp"></forward>
<forward name="add_Input" path="/person/add_input.jsp"></forward>
</action>
</action-mappings>
<message-resources parameter="MessageResources" />
</struts-config>package com.gudong.oa.web.action;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.beanutils.BeanUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;import com.guandong.oa.manager.OrgManager;
import com.guandong.oa.model.Orgnization;
import com.gudong.oa.web.forms.OrgActionForm;public class OrgAction extends DispatchAction {
private OrgManager orgManager; @Override
protected ActionForward unspecified(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
OrgActionForm oaf = (OrgActionForm) form;
request.setAttribute("pm", orgManager.findOrgs(oaf.getParentId())); int ppid = 0; if (oaf.getParentId() != 0) { Orgnization org = (Orgnization) orgManager.findOrg(oaf.getParentId()); Orgnization parent = org.getParent(); if (parent != null) { ppid = parent.getId(); }
}
request.setAttribute("ppid", ppid); if(oaf.isSelect()){
return mapping.findForward("select");
}
return mapping.findForward("index");
} public ActionForward add_input(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
return mapping.findForward("add_input");
} public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
OrgActionForm oaf = (OrgActionForm) form; Orgnization org = new Orgnization(); BeanUtils.copyProperties(org, oaf); orgManager.addOrg(org, oaf.getParentId()); return mapping.findForward("pub_add_success");
} public ActionForward del(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
OrgActionForm oaf = (OrgActionForm) form; orgManager.delOrg(oaf.getId()); // 异常方法二
//
// try {
// 手功异常
// orgManager.delOrg(oaf.getId());
// } catch (Exception e) {
// ActionMessages msgs = new ActionMessages();
//
// ActionMessage msg = new ActionMessage("errors.detail",
// e.getMessage());
//
// msgs.add("detail", msg);
//
// this.saveErrors(request, msgs);
//
// return mapping.findForward("exception");
// } return mapping.findForward("pub_del_success");
} public void setOrgManager(OrgManager orgManager) {
this.orgManager = orgManager;
}}package com.gudong.oa.web.action;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.beanutils.BeanUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;import com.guandong.oa.manager.PersonManager;
import com.guandong.oa.model.Person;
import com.gudong.oa.web.forms.PersonActionForm;public class PersonAction extends DispatchAction { private PersonManager personManager; protected ActionForward unspecified(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception { request.setAttribute("pm", personManager.searchPersons()); return mapping.findForward("index");
} // 打开添加页面
public ActionForward addInput(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception { return mapping.findForward("add_Input");
}
//添加人员
public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception { PersonActionForm paf = (PersonActionForm)form; Person person = new Person(); BeanUtils.copyProperties(person, paf); personManager.addPerson(person,paf.getOrgId());
return mapping.findForward("pub_add_success");
} //删除人员
public ActionForward del(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception { PersonActionForm paf = (PersonActionForm)form; personManager.delPerson(paf.getId()); return mapping.findForward("pub_del_success");
} public void setPersonManager(PersonManager personManager) {
this.personManager = personManager;
}}