public void deleteById(String code) { Employee employee = (Employee) this.getHibernateTemplate().find("from Employee where code="+code);
//Employee employee = (Employee) this.getHibernateTemplate().load(Employee.class, code);
this.getHibernateTemplate().delete(employee);
}
this.getHibernateTemplate().find("from Employee where code="+code);出来的结果为list不能该为Employee
那我如何才能实现
我试了另外一种方式Employee employee = (Employee) this.getHibernateTemplate().get(Employee.class,code);
报出的错误是org.hibernate.TypeMismatchException: Provided id of the wrong type. Expected: class com.baidu.manageSystem.machineRoom.dto.EmployeeId, got class java.lang.String
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:86)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)
at org.hibernate.impl.SessionImpl.load(SessionImpl.java:795)
at org.hibernate.impl.SessionImpl.load(SessionImpl.java:788)
at org.springframework.orm.hibernate3.HibernateTemplate$3.doInHibernate(HibernateTemplate.java:508)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
at org.springframework.orm.hibernate3.HibernateTemplate.load(HibernateTemplate.java:502)
at org.springframework.orm.hibernate3.HibernateTemplate.load(HibernateTemplate.java:496)
at com.baidu.manageSystem.machineRoom.dao.EmployeeDao.deleteById(EmployeeDao.java:157)
at com.baidu.manageSystem.machineRoom.controller.EmployeeAction.deleteById(EmployeeAction.java:313)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.baidu.manageSystem.common.filter.EncodingFilter.doFilter(EncodingFilter.java:32)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)
弄了好久了,经理逼我交东西,无奈只得求见高手

解决方案 »

  1.   

    org.hibernate.TypeMismatchException: Provided id of the wrong type. Expected: class com.baidu.manageSystem.machineRoom.dto.EmployeeId, got class java.lang.String我不知道那个get方法具体使用环境
    这个提示是类型匹配异常 这里提到了id,正确的类型是com.baidu.manageSystem.machineRoom.dto.EmployeeId
    可以想象,知道了EmployeeId这个员工的唯一标识,就能获得Employee对象的实例
    这里哪个参数是String呢
      

  2.   

    "from Employee where code="+code
    这句写错了吧
    "from Employee where code="+code+""
      

  3.   

    改与不改无碍,主要我现在怎么把this。gethibernateTmepe那查询出来的结果转化
      

  4.   

    lz换地方拉,前面的帖子还没结呢!
    你那得code是员工的唯一标识吗,你数据库中的类型是String的,用get好像不行
    你用
    this.getHibernateTemplate().find("from Employee where code="+code);
    出来的结果为list
    if(list.size>0){
    Employee  employee = list.get(0)
    this.getHibernateTemplate().delete(employee);
    }
      

  5.   

    对于你的第二种方法为什么不对,应该是你的主键类型配的不对,咱不管
    看你的第一个方法,可以这样修改:
    public void deleteById(String code) {        List list =  this.getHibernateTemplate().find("from Employee where code="+code);
    Employee employee = null;
            if(list!=null&&list.size()>0){
     employee = (Employee)list.get(0);
            }        this.getHibernateTemplate().delete(employee);
        }
      

  6.   

    code是String型是吧 换成EmployeeId型