你这个好像是cglib自动生成的吧

解决方案 »

  1.   

    ClassCastException这个异常一般是强制类型转换错误,不能强制转的时候你转了
      

  2.   

    t com.guandong.oa.manager.impl.PersonManagerImpl.addPerson(PersonManagerImpl.java:16) 
    看看这行
    ClassCastException是类型转换出了问题
      

  3.   

    把com.guandong.oa.manager.impl.PersonManagerImpl.java这个程序放上来看看撒。
      

  4.   

    如果你的com.guandong.oa.model.Person是用ejb3写的或hibernate 3.0 使用复合主键。就一定要实现serializable接口。否则就会出现:java.lang.ClassCastException错误~
      

  5.   

    java.lang.ClassCastException: com.guandong.oa.model.Person$$EnhancerByCGLIB$$d70c6a32 
    看上去是对象转换异常,楼主把从DAO里面取出来的数据放到List或者取出的时候的那段代码贴出来,否则怎么看?
      

  6.   

    对不起这两天去面试了,没上线,我现在把代码贴出来,可能有点多因为不知道那出错了
    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);
    }}
      

  7.   

    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>
      

  8.   

    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;
    }}
      

  9.   

    (Orgnization)getHibernateTemplate().load(Person.class,orgId) 看看类型转换是否正确