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,就完事了