报错信息:could not find setter for rownum_用createSQLQuery的方式,查询的结果setResultTransformer()了一下。
并且设置了firstResult和MaxResult.现象:
当firstResult为0的时候,一切正常,当firstResult不为0的时候报 “could not find setter for rownum_”的错误
如果不setResultTransformer,设置的firstResult和MaxResult不受影响。
只有在这两个同事用并且是createSQLQuery的时候才会出现。
用createQuery不会出现。不知道,有没有人遇到过呢?盼高手解答,谢谢!

解决方案 »

  1.   

    补充一下,数据库是oracle9,
    生成的sql语句也正常。
      

  2.   

    查询结果不用setResultTransformer他试下
      

  3.   

    不setResultTransformer的时候正常,
      

  4.   

    现在的问题是,setResultTransformer sql查询的时候会到 这个实体*.class中去寻找rownum_这个变量的setter方法,
    但rownum_如果等于0的时候,hibernate自动生成的sql中只有rownum < ** ,这时候却没有问题,只有在rownum不为0的时候 ,sql中有 rownum < * 和 rownum > *的时候才会出现?
    搞不懂!!!!
      

  5.   

    再补充一下:执行到query.list();的时候报的上述错误,但query.list()再次执行的时候,就能够正确的返回查询的数据了。
    盼高手解答。谢谢
      

  6.   

    List<你要返回的数据类型> list = null;list = session.createQuery(“HQL语句").list();
    你要设置分页可以按照如下设置
    list = session.createQuery(“HQL语句").setMaxResults(pageSize).setFirstResult(pageSize * (pageNo - 1)).list();自己实践一下 !!你看看我说的对不对!
    下面是我写的项目的例子中的一部分你可以参考下:
    Session session = null;
    List<AcceptanceVehicle> list = null;

    list = session.createQuery("from AcceptanceVehicle order by wagonNumber")
    .setMaxResults(pageSize).setFirstResult(
    pageSize * (pageNo - 1)).list();

      

  7.   

    用list获取记录,如果是表与表的映射,映射表只能获取到它的主键,其他值丢失。
    建议
    Query query = session.createQuery(sqlString);
    通过query来限定取得的个数
      

  8.   

    以前好像遇到过
    忘记怎么解决的去了
    既然createQuery不报错 
    就用这个好了啊
    createSQLQuery这个好像是有点问题的
      

  9.   

    rownum
    没有set方法,
    重新生成一下get /set 方法
      

  10.   

    答12楼:手动写过set和get方法,但没有效果。
    答10楼:主要问题是,系统里有大量采用createSQLQuery的方法,要是全部用createQuery替换,会让人××掉的。
    答9,8楼:你们的回答不是我问的问题,可以看看前面的帖子留言,再回答。谢谢