try {
            session = getSession();
            Query query = session.createQuery(hqlQuery);
            setParameter(query, values);
            // 查询开始开始位置
            query.setFirstResult(beginRow);
            // 查询记录数
            query.setMaxResults(pageSize);
            // 得到记录列表
            arr = query.list();        } catch (Exception e) {
            e.printStackTrace();
        } finally {
         releaseSession(session);
        }
当hqlQuery为from ShelfTemplateQuery as s where 1=1  and s.panelNumType = ?时能通过,当hqlQuery为from ShelfTemplateQuery as s where 1=1 通过不了,报错:
[WARN] <2008-02-20 11:41:06:031> JDBCExceptionReporter::logExceptions: SQL Error: 1722, SQLState: 42000
[ERROR] <2008-02-20 11:41:06:031> JDBCExceptionReporter::logExceptions: ORA-01722: invalid number
请高手指点一下

解决方案 »

  1.   

    你的from关键字前面是否做了涉及到number类型的操作,s.panelNumType = ?这个条件应该是保证了结果集中某字段的数据类型是number,你把它去掉以后自然会出问题了
      

  2.   

    你应该加一个if判断 当有s.panelNumType = ? 你才set 没有的时候不要set 没有还set那肯定报错啊 
      

  3.   

    请问楼上,您说的不要set是指
                            setParameter(query,   values); 
                            //   查询开始开始位置 
                            query.setFirstResult(beginRow); 
                            //   查询记录数 
                            query.setMaxResults(pageSize); 
    这三条语句都不要吗?
      

  4.   

    根据你的hqlQuery判断啊 你如果像上面那样写死了 那必须就是要传入带“?”的 否则没“?”你还set那java怎么知道往哪 set啊?就好像我给你个苹果然后让你装到盒子里去 但我却给你个实心的盒子 你说你怎么往里装......