大家好,hibernate对于sqlserver的分页查询似乎有效率上的问题:Query query=session.createQuery("from User as aa ");
query.setFirstResult(0);
query.setMaxResults(15);当查询第一页的时候,发出sql语句:select top 15 ...
当查询第二页的时候,发出sql语句:select top 30 ...
当查询第三页的时候,发出sql语句:select top 45 ...
......(翻页越多,每次查询的记录数也越多,而每次查询的数目应该是一定的,就是每页记录数15.)
在mysql中,可能会发出含有limit的sql来真正意义上地限定分页查询的起始点,但在sqlserver中,上述结果明显是不合理的,我试着用hql自己写,但是似乎它不支持select top的方式,如查询第三页:
select top 15 * from user as aa where id not in (select top 30 id from user as bb) -- 这样会报错,说15没有映射这个问题如何解决?谢谢,谢谢~~
query.setFirstResult(0);
query.setMaxResults(15);当查询第一页的时候,发出sql语句:select top 15 ...
当查询第二页的时候,发出sql语句:select top 30 ...
当查询第三页的时候,发出sql语句:select top 45 ...
......(翻页越多,每次查询的记录数也越多,而每次查询的数目应该是一定的,就是每页记录数15.)
在mysql中,可能会发出含有limit的sql来真正意义上地限定分页查询的起始点,但在sqlserver中,上述结果明显是不合理的,我试着用hql自己写,但是似乎它不支持select top的方式,如查询第三页:
select top 15 * from user as aa where id not in (select top 30 id from user as bb) -- 这样会报错,说15没有映射这个问题如何解决?谢谢,谢谢~~
在应用中 hql 和 jdbc 混合使用
Sql2005就好处理多了,建议用Sql2005处理分页
List<Object[]>类型,即pojo的属性被放在了一个数组中,需要自己重新按顺序将数组中的元素提取,重新构造一个pojo实例,唉,不过我就这样做了,目前来看性能明显提高了,不过才三十几万数据。