hibernate分页
public void pagination(HttpServletRequest request){
int pageSize=10;
String currentPageStr=request.getParameter("currentPage");
int currentPage=(currentPageStr==null)?0:Integer.parseInt(currentPageStr);
Session session=HibernateSessionFactory.getSession();
Query qy=session.createQuery("from Product");
Transaction tran=session.beginTransaction();
int count=qy.list().size();
int totalPage=(count-1)/pageSize+1;
qy.setFirstResult((currentPage-1)*pageSize);
qy.setMaxResults(pageSize);
List list=qy.list();
request.setAttribute("count", String.valueOf(count));
request.setAttribute("totalPage", String.valueOf(totalPage));
request.setAttribute("currentPage", String.valueOf(currentPage));
request.setAttribute("pageSize", String.valueOf(pageSize));
request.setAttribute("products", list);
String bar=setBar();
request.setAttribute("bar", bar);
}
为什么执行到:
qy.setFirstResult((currentPage-1)*pageSize);
qy.setMaxResults(pageSize);就报错,说:
java.sql.SQLException: [Microsoft][
SQLServer 2000 Driver for JDBC]Unsupported
method: ResultSet.absolute应该怎样做才行?
------解决方案--------------------你看
int currentPage=(currentPageStr==null)?0:Integer.parseInt(currentPageStr);
你看你自己的这个三元运算符,当为空的时候为0
qy.setFirstResult((currentPage-1)*pageSize);这个时候(currentPage-1)*pageSize 不为负了吗
改成这样,当前页 默认为1
int currentPage=(currentPageStr==null)?1:Integer.parseInt(currentPageStr);
我建议你吧分页信息封装成对象,你这么写条理性太差
------解决方案--------------------你的jdbc驱动不支持,可能太旧了或者版本不符,或者你数据库补丁包没打到sp4.。。。
------解决方案--------------------很简单
------解决方案--------------------不过我记的sql server 没有自带的数据库分页方法,hibernate可以?
------解决方案--------------------sql驱动还有一个只要一个jar包的。
------解决方案--------------------antlr.jar包没有考到项目的web-inf/lib
------解决方案--------------------你抛个异常
------解决方案--------------------mssqlserver.jar msutil.jar msbase.jar 也有新的和旧的,看看你的包的大小,似乎有个是279k吧
或者你干脆换成最新的驱动包得了,就一个sqljdbc.jar,就完事了