0

我正在构建一个门户网站,我正在使用 Hibernate 访问 MySQL 并将获取的数据推送到 JSP 以表格形式打印。我正在使用 Tomcat 进行 servlet 部署。我的 servlet 必须进行 3 个 HQL 查询,然后将检索到的数据推送到 JSP。在我部署 servlet 后,它在我第一次使用 HTML 表单进行查询时工作正常。此外,在 Eclipse 控制台中,我可以看到正在执行的所有 3 个 HQL 查询。但是当我尝试再次进行查询时,即使是与上次从我的 HTML 表单进行的查询相同的查询,我也没有在 JSP 页面上获得任何数据(我试图填充的表只包含零)。检查 Eclipse 控制台,我发现只执行了第一个 HQL 查询,没有其他任何内容出现,甚至没有错误消息。如果我重新启动 Tomcat,或者只是重新部署 servlet,它可以工作,但只能再一次。请帮忙

流程就像 - HTML 表单 -> Servlet -> JSP

         String major,date,minor,ip;
         double[][][] transactionTime = new double[2][50][10];
         int[] testCaseId = new int[10];
         String[] activityName = new String[10];
         major=req.getParameter("major");
         date=req.getParameter("date");
         minor=req.getParameter("minor");
         ip=req.getParameter("ip");
         String testCaseName=req.getParameter("testCaseName");
         Session session = null;


      try{

      SessionFactory sessionFactory = new 

    Configuration().configure()
    .buildSessionFactory();
      session =sessionFactory.openSession();

      //Create Select Clause HQL


         String SQL_QUERY2 ="Select testCases.activityName,testCases.testCaseID from TestCases testCases where testCases.testcaseName like \'" + testCaseName + "\'";
         Query query2 = session.createQuery(SQL_QUERY2);
         for(Iterator it2=query2.iterate();it2.hasNext();ctr2++)
              {
              Object[] act = (Object[]) it2.next();
              activityName[ctr2]=(String) act[0];
              testCaseId[ctr2] = (Integer) act[1];
              }


        for(int j=0;j<ctr2;j++){
            ctr=0;
         String SQL_QUERY3 ="Select tran.transactionTime from Transactions tran where tran.samples.builds.buildMajorVersion like " + major + " and tran.samples.builds.buildMinorVersion like " + minor + " and tran.samples.runDate like \'" + date + "\' and tran.testCases.testCaseID like " + testCaseId[j] + " and tran.samples.testbeds.server.ipv4Address like \'" + ip + "\'";
         Query query3 = session.createQuery(SQL_QUERY3);
         for(Iterator it3=query3.iterate();it3.hasNext();ctr++)
              {
              Object time = (Object) it3.next();
              transactionTime[0][j][ctr]=(Double) time;
              int precision = 100;
              transactionTime[0][j][ctr] = Math.floor(transactionTime[0][j][ctr]*precision+0.5)/precision;
              }
        }



        for(int j=0;j<ctr2;j++){
            ctr3=0;
         String SQL_QUERY5 ="Select tran.transactionTime from Transactions tran where tran.samples.builds.buildMajorVersion like " + major + " and tran.samples.builds.buildMinorVersion like " + minor + " and tran.samples.baseline=1";
         Query query5 = session.createQuery(SQL_QUERY5);
         for(Iterator it5=query5.iterate();it5.hasNext();ctr3++)
              {
              Object time = (Object) it5.next();
              transactionTime[1][j][ctr3]=(Double) time;
              int precision = 100;
              transactionTime[1][j][ctr3] = Math.floor(transactionTime[1][j][ctr3]*precision+0.5)/precision;
              }
        }





 session.close();
      }
      catch(Exception e){
          System.out.println(e.getMessage());
      }
      finally{

      }







    req.setAttribute("major",major);
    req.setAttribute("minor",minor);
    req.setAttribute("date",date);
    req.setAttribute("ip",ip);
    req.setAttribute("testCaseName",testCaseName);
    req.setAttribute("transactionTime", transactionTime);
    req.setAttribute("activityName", activityName);
    req.setAttribute("sampleNumBase", ctr3);
    req.setAttribute("sampleNumRun", ctr);
      req.getRequestDispatcher("/WEB-INF/src/BaselineRawData.jsp").forward(req, res);  
 }

}

第一次成功运行时 Eclipse 中的控制台输出

Hibernate: 
    select
        testcases0_.activityName as col_0_0_,
        testcases0_.testCaseID as col_1_0_ 
    from
        TestCases testcases0_ 
    where
        testcases0_.testcaseName like 'Deploy 200 tunings on 10 devices with 0 tunings' Hibernate: 
    select
        transactio0_.transactionTime as col_0_0_ 
    from
        Transactions transactio0_ cross 
    join
        Samples samples1_ cross 
    join
        Builds builds2_ cross 
    join
        TestBeds testbeds7_ cross 
    join
        Machines server8_ 
    where
        transactio0_.sampleId=samples1_.sampleId 
        and samples1_.buildId=builds2_.buildId 
        and samples1_.testBedId=testbeds7_.testBedId 
        and testbeds7_.serverId=server8_.machineId 
        and (
            builds2_.buildMajorVersion like 4
        ) 
        and (
            builds2_.buildMinorVersion like 4434
        ) 
        and (
            samples1_.runDate like '2012-02-25'
        ) 
        and (
            transactio0_.testCaseId like 1
        ) 
        and (
            server8_.ipv4Address like '10.104.52.200'
        ) Hibernate: 
    select
        transactio0_.transactionTime as col_0_0_ 
    from
        Transactions transactio0_ cross 
    join
        Samples samples1_ cross 
    join
        Builds builds2_ cross 
    join
        TestBeds testbeds7_ cross 
    join
        Machines server8_ 
    where
        transactio0_.sampleId=samples1_.sampleId 
        and samples1_.buildId=builds2_.buildId 
        and samples1_.testBedId=testbeds7_.testBedId 
        and testbeds7_.serverId=server8_.machineId 
        and (
            builds2_.buildMajorVersion like 4
        ) 
        and (
            builds2_.buildMinorVersion like 4434
        ) 
        and (
            samples1_.runDate like '2012-02-25'
        ) 
        and (
            transactio0_.testCaseId like 2
        ) 
        and (
            server8_.ipv4Address like '10.104.52.200'
        ) Hibernate: 
    select
        transactio0_.transactionTime as col_0_0_ 
    from
        Transactions transactio0_ cross 
    join
        Samples samples1_ cross 
    join
        Builds builds2_ cross 
    join
        TestBeds testbeds7_ cross 
    join
        Machines server8_ 
    where
        transactio0_.sampleId=samples1_.sampleId 
        and samples1_.buildId=builds2_.buildId 
        and samples1_.testBedId=testbeds7_.testBedId 
        and testbeds7_.serverId=server8_.machineId 
        and (
            builds2_.buildMajorVersion like 4
        ) 
        and (
            builds2_.buildMinorVersion like 4434
        ) 
        and (
            samples1_.runDate like '2012-02-25'
        ) 
        and (
            transactio0_.testCaseId like 3
        ) 
        and (
            server8_.ipv4Address like '10.104.52.200'
        ) Hibernate: 
    select
        transactio0_.transactionTime as col_0_0_ 
    from
        Transactions transactio0_ cross 
    join
        Samples samples1_ cross 
    join
        Builds builds2_ cross 
    join
        TestBeds testbeds7_ cross 
    join
        Machines server8_ 
    where
        transactio0_.sampleId=samples1_.sampleId 
        and samples1_.buildId=builds2_.buildId 
        and samples1_.testBedId=testbeds7_.testBedId 
        and testbeds7_.serverId=server8_.machineId 
        and (
            builds2_.buildMajorVersion like 4
        ) 
        and (
            builds2_.buildMinorVersion like 4434
        ) 
        and (
            samples1_.runDate like '2012-02-25'
        ) 
        and (
            transactio0_.testCaseId like 4
        ) 
        and (
            server8_.ipv4Address like '10.104.52.200'
        ) Hibernate: 
    select
        transactio0_.transactionTime as col_0_0_ 
    from
        Transactions transactio0_ cross 
    join
        Samples samples1_ cross 
    join
        Builds builds2_ cross 
    join
        TestBeds testbeds7_ cross 
    join
        Machines server8_ 
    where
        transactio0_.sampleId=samples1_.sampleId 
        and samples1_.buildId=builds2_.buildId 
        and samples1_.testBedId=testbeds7_.testBedId 
        and testbeds7_.serverId=server8_.machineId 
        and (
            builds2_.buildMajorVersion like 4
        ) 
        and (
            builds2_.buildMinorVersion like 4434
        ) 
        and (
            samples1_.runDate like '2012-02-25'
        ) 
        and (
            transactio0_.testCaseId like 5
        ) 
        and (
            server8_.ipv4Address like '10.104.52.200'
        ) Hibernate: 
    select
        transactio0_.transactionTime as col_0_0_ 
    from
        Transactions transactio0_ cross 
    join
        Samples samples1_ cross 
    join
        Builds builds2_ cross 
    join
        TestBeds testbeds7_ cross 
    join
        Machines server8_ 
    where
        transactio0_.sampleId=samples1_.sampleId 
        and samples1_.buildId=builds2_.buildId 
        and samples1_.testBedId=testbeds7_.testBedId 
        and testbeds7_.serverId=server8_.machineId 
        and (
            builds2_.buildMajorVersion like 4
        ) 
        and (
            builds2_.buildMinorVersion like 4434
        ) 
        and (
            samples1_.runDate like '2012-02-25'
        ) 
        and (
            transactio0_.testCaseId like 6
        ) 
        and (
            server8_.ipv4Address like '10.104.52.200'
        ) Hibernate: 
    select
        transactio0_.transactionTime as col_0_0_ 
    from
        Transactions transactio0_ cross 
    join
        Samples samples1_ cross 
    join
        Builds builds2_ 
    where
        transactio0_.sampleId=samples1_.sampleId 
        and samples1_.buildId=builds2_.buildId 
        and (
            builds2_.buildMajorVersion like 4
        ) 
        and (
            builds2_.buildMinorVersion like 4434
        ) 
        and samples1_.baseline=1 10

Eclipse 中后续和不成功运行的控制台输出

Hibernate: 
    select
        testcases0_.activityName as col_0_0_,
        testcases0_.testCaseID as col_1_0_ 
    from
        TestCases testcases0_ 
    where
        testcases0_.testcaseName like 'Deploy 200 tunings on 10 devices with 0 tunings'
10
4

1 回答 1

0

Hardik 说问题似乎与ctr2. 由于您的循环迭代基于此。它在哪里初始化?

问题是ctr2并且ctr在 d servlet 代码之外被声明和初始化

于 2012-04-18T09:04:29.450 回答