首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

hibernate分页,该如何解决

2012-03-12 
hibernate分页public void pagination(HttpServletRequest request){int pageSize10String currentPageS

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

热点排行