遇到的问题

 

主要实现功能:对project按照项目java,test,c++,资料四项需求总和进行排序,实现思路,先找出project排序后的ID序列,再找出相应project列表。

涉及表单:

Project 表

说明:项目信息表

字段名

数据类型及长度

允许为空

描述

备注

ProjectID

Number(20)

项目编号

主键,自增

PName

Varchar2(30)

 

项目名称

 

EmpID

Number(20)

项目经理编号

外键,Employee(EmpID)

PState

Varchar(30)

 

项目状态

整个敏捷流程的状态

Premark

Varchar2(2048)

 

备注

 

 

 

PROJECTNEED项目需求表

字段名

数据类型及长度

允许为空

描述

备注

PROJECTNEEDID

Number(20)

项目需求id

主键

PNPROJECTID

Numbe(20)

所属项目id

外键(project)

PNCATEGORY

VARCHAR2(30)

需求分类

(包括java,test,c++,资料等)

PNSKILL

VARCHAR(1024)

技能要求

 

PNPERSONNUM

Number(10)

需求人数

 

PNDATE

DATE

预计投入时间

 

 

相关代码

//找到排序后的ID序列

public List<Object> findAllIdByPage(final int offset,final int length){

       try {

           final String sql="select projectid from( select * from project a,(select pnprojectid,sum(pnpersonnum)  from projectneed where pncategory in('JAVA','C++','TEST','INFO') group by pnprojectid order by sum(pnpersonnum) desc) b where a.projectid=b.pnprojectid(+))";

        List list = getHibernateTemplate().executeFind(new HibernateCallback() {

              public Object doInHibernate(Session session)

              throws HibernateException, SQLException {

              Query query = session.createSQLQuery(sql);

              query.setFirstResult(offset);

              query.setMaxResults(length);

              List list = query.list();

              session.close();

              return (List<Object>)list;

              }

             });

       

             return (List<Object>)list;

        } catch (RuntimeException re) {

            throw re;

        }

//找到对应project序列

int totalsize = projectService.findsize();

           totalPage = ((totalsize + pageSize - 1) / pageSize);

       currentPage = (currentPage > totalPage) ? totalPage : currentPage;

           currentPage = (currentPage <= 0) ? 1 : currentPage;

           //zw项目按需求数量排序,先得到ID顺序,继而得到project顺序

           List<Object> idList=projectService.findAllIdByPage(pageSize

                  * (currentPage - 1), pageSize);

           List<Project> allProject=new ArrayList<Project>();

          for(int i=0;i<idList.size();i++){

               Object param =  idList.get(i);

    Project project = projectService.findById(Long.valueOf(String.valueOf(param)));

              allProject.add(project);

          

           }

 

出现问题:当分页的每页数目大于查询的数据记录时,显示正常,Long.valueOf(String.valueOf(param))正常取值,当记录大于每页分页数目时,第一页显示正常,第二页报错,错误类型:

java.lang.NumberFormatException: For input string: "[Ljava.lang.Object;@1be2b55"

    at java.lang.NumberFormatException.forInputString(Unknown Source)

    at java.lang.Long.parseLong(Unknown Source)

    at java.lang.Long.valueOf(Unknown Source)

    at com.projectmanage.action.ProjectAction.showAllByPage(ProjectAction.java:310)

即当要跳转的页数等于1时Long.valueOf(String.valueOf(param))正常大于等于2时Long.valueOf(String.valueOf(param))变为了地址。

阅读更多
换一批

没有更多推荐了,返回首页