本帖最后由 lihao1129 于 2009-08-13 11:46:37 编辑

解决方案 »

  1.   

    DAO里的
    public String findbyId(final String hf) {
    // TODO Auto-generated method stub

    return (String) super.getHibernateTemplate().execute(new HibernateCallback(){
    public Object doInHibernate(Session arg0) {
    String sql="SELECT articleIdId FROM ArticleId AS ar WHERE ar.articleIdName =:hf";

    System.out.println("sql语句返回的num:========="+arg0.createQuery(sql)
    .setString("hf", hf)
    .uniqueResult());

    String num =(String)arg0.createQuery(sql)
    .setParameter("hf", hf)
    .uniqueResult();

    return num;
    }
    });
    }
    public Integer findbyintName(final String name) {
    // TODO Auto-generated method stub
    return (Integer) super.getHibernateTemplate().execute(new HibernateCallback(){
    public Object doInHibernate(Session arg0) {
    System.out.println("进入来integer");
    String sql="SELECT articleIdId FROM ArticleId AS ar WHERE ar.articleIdName =:name";

    System.out.println("Integer:========="+arg0.createQuery(sql)
    .setString("name", name)
    .uniqueResult());

    int num =(Integer)arg0.createQuery(sql)
    .setString("name", name)
    .uniqueResult();

    return num;
    }
    });
    }
      

  2.   

    我知道你进了,但是你看"MainAction.java:140"
    是不是140行的那个方法找不到
      

  3.   

    140行是这个,他前面的 ==========-========= 都没有打印出来呢,这个错误不是action里的
    是在dao里面,如果 我在System.out.println("==========-==========");里的
                    Integer jhh = articleIdBiz.findbyintName(aid.getArticleIdName());
    方法换成public String findbyId(final String hf)在add的时候转换integer.p的时候 会报错System.out.println("看看jh是否有返回件号ID:"+jhh+"==也要看看有没有:"+aid.getArticleIdName());
      

  4.   

    这个if里换了下语句
    if(jh == null){//判断是否有这个件号;
    System.out.println("判断是否给予外键件号:"+aid);
    articleIdBiz.addIArticle(aid);//如果没有这个件号系统就会添加这个件号
    System.out.println("==========-==========");
    String jhh = articleIdBiz.findbyId(aid.getArticleIdName());
    //String jhh= articleIdBiz.findbyId(aid.getArticleIdName());
    System.out.println("==========-==========");
    System.out.println("看看jh是否有返回件号ID:"+jhh+"==也要看看有没有:"+aid.getArticleIdName());
    System.out.println(jhh);
    hd.setArticleId(Integer.parseInt(jhh));//然后在把这个件号给hd的外键给予联系
    }else{//如果有返回件号的id给Hmain上的外键赋值
    hd.setArticleId(Integer.parseInt(articleIdBiz.findbyId(aid.getArticleIdName())));
    }

    sql语句返回的num:=========26
    Hibernate: select articleid0_.articleId_Id as col_0_0_ from hdData.dbo.articleId articleid0_ where articleid0_.articleId_Name=?
    2009-8-13 11:51:24 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet action threw exception
    java.lang.ClassCastException: java.lang.Integer
    at com.whhd.dao.ArticleIdDAO$2.doInHibernate(ArticleIdDAO.java:78)
    at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
    at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:338)
    at com.whhd.dao.ArticleIdDAO.findbyId(ArticleIdDAO.java:70)
    at com.whhd.biz.ArticleIdImpl.findbyId(ArticleIdImpl.java:45)
    at com.whhd.struts.action.MainAction.main_doAdd(MainAction.java:130)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
    at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
    at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
    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:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Unknown Source)
      

  5.   

    public ActionForward main_doAdd(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response) {
                    System.out.println("+++++++++++++++++++我进了doAdd了");
                    // TODO Auto-generated method stub    
                HdmainForm hdmainForm = (HdmainForm)form;
                Hdmain hd = new Hdmain();
                ArticleId aid = new ArticleId();
                Corporation cor = new Corporation();
                Hddate hdd = new Hddate();
                
                List list = hdmainBiz.findAll();                
                    System.out.println("====================");
                hd.setMainCycle(request.getParameter("hdmainCycle"));//周期
                    System.out.println("main_doAdd cycle:"+"+"+hd.getMainCycle());
                    
                hd.setMainWarrantyTime(request.getParameter("hdmainWarrantyTime"));//保修期
                    System.out.println("warrantyTime:"+hd.getMainWarrantyTime());
                    
                hd.setMainManhourTest(request.getParameter("manhourTest"));
                hd.setMainManhourRepair(request.getParameter("manhourRepair"));
                hd.setMainManhourOverhaul(request.getParameter("manhourOverhaul"));
                hd.setMainImmobilityRepair(request.getParameter("immobilityRepair"));
                hd.setMainImmobilityOverhaul(request.getParameter("immobilityOverhaul"));
                hdd.setDateData(request.getParameter("hdDate"));
                hd.setHddate(hdd);
                //给件号跟ATA章节号赋值
                aid.setArticleIdName(request.getParameter("hdmainArticleId"));
                aid.setArticleIdAta(request.getParameter("hdmainAta"));                
                String jh = articleIdBiz.findbyId(aid.getArticleIdName());        
                System.out.println("件号id:"+jh);
                //把ID给予查询出返回一个件号
                if(jh == null){//判断是否有这个件号;
                    System.out.println("判断是否给予外键件号:"+aid);
                    articleIdBiz.addIArticle(aid);//如果没有这个件号系统就会添加这个件号
                    System.out.println("==========-==========");
                    Integer jhh = articleIdBiz.findbyintName(aid.getArticleIdName());
                    //String jhh= articleIdBiz.findbyId(aid.getArticleIdName());
                    System.out.println("==========-==========");
                    System.out.println("看看jh是否有返回件号ID:"+jhh+"==也要看看有没有:"+aid.getArticleIdName());    
                    System.out.println(jhh);
                    hd.setArticleId(jhh);//然后在把这个件号给hd的外键给予联系    
                }else{//如果有返回件号的id给Hmain上的外键赋值
                    hd.setArticleId(Integer.parseInt(articleIdBiz.findbyId(aid.getArticleIdName())));
                }
                
                System.out.println(articleIdBiz.findbyId(aid.getArticleIdName()));                System.out.println("!!!!!!!!!:"+hd.getArticleId());
                
                    
                System.out.println(aid.getArticleIdAta()+"|"+aid.getArticleIdName());
                
                cor.setCorporationName(request.getParameter("hdmainName"));//添加公司名称
                hd.setCorporation(cor);//添加入外键的公司名称
                Hdmain p = hdmainBiz.findbyCorAndId(cor.getCorporationName(), aid.getArticleIdName());
                
                if (p == null) {//来判断是不是有公司名称并且件号同时相等的条件,如果存在说明以添加过
                    System.out.println("看看是否能进判断语句");
                    System.out.println("HD前一句:"+hd);
                    articleIdBiz.addIArticle(aid);
                    corporationBiz.addIArticle(cor);
                    hddateBiz.addIArticle(hdd);
                    hdmainBiz.addHdmain(hd);// TODO 有问题的一句话
                    System.out.println("HD后一句:"+hd);
                    return mapping.findForward("Add_success");
                } else {
                    return mapping.findForward("Add_Failure");
                }    
        }