hibernate分页

songfuqiang 2008-06-11 05:00:33
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应该怎样做才行?
...全文
636 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Landor2004 2008-06-12
  • 打赏
  • 举报
回复
mssqlserver.jar msutil.jar msbase.jar 也有新的和旧的,看看你的包的大小,似乎有个是279k吧

或者你干脆换成最新的驱动包得了,就一个sqljdbc.jar,就完事了
songfuqiang 2008-06-12
  • 打赏
  • 举报
回复
antlr.jar包有啊!可是不行!
wyhjia 2008-06-12
  • 打赏
  • 举报
回复
mark
学习
liujie616 2008-06-11
  • 打赏
  • 举报
回复
你抛个异常
interpb 2008-06-11
  • 打赏
  • 举报
回复
antlr.jar包没有考到项目的web-inf/lib
songfuqiang 2008-06-11
  • 打赏
  • 举报
回复
如果不要:
qy.setFirstResult((currentPage-1)*pageSize);
qy.setMaxResults(pageSize);
这两句就正确了!
songfuqiang 2008-06-11
  • 打赏
  • 举报
回复
这段代码本来是正确的,但是放到Struts就报错,是怎么回事?
int pageSize=5;
int currentPage=2;
Query qy=session.createQuery("from Product");
int count=qy.list().size();
int totalPage=(count-1)/5+1;
System.err.print(totalPage);
qy.setFirstResult((currentPage-1)*pageSize);
qy.setMaxResults(pageSize);
List list=qy.list();
for(int i=0;i<list.size();i++){
Product product=(Product)list.get(i);
System.err.println(product.getMember().getMemberName());
}

报错:
[18:37:47.039] Dispatch[/product] to method pagination returned an exception
[18:37:47.039] java.lang.reflect.InvocationTargetException
[18:37:47.039] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[18:37:47.039] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[18:37:47.039] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[18:37:47.039] at java.lang.reflect.Method.invoke(Method.java:324)
[18:37:47.039] at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
[18:37:47.039] at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
[18:37:47.039] at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
[18:37:47.039] at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
[18:37:47.039] at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
[18:37:47.039] at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
[18:37:47.039] at javax.servlet.http.HttpServlet.service(HttpServlet.java:115)
[18:37:47.039] at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
[18:37:47.039] at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:106)
[18:37:47.039] at com.filters.Character.doFilter(Character.java:24)
[18:37:47.039] at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
[18:37:47.039] at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:178)
[18:37:47.039] at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
[18:37:47.039] at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:268)
[18:37:47.039] at com.caucho.server.port.TcpConnection.run(TcpConnection.java:389)
[18:37:47.039] at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:507)
[18:37:47.039] at com.caucho.util.ThreadPool.run(ThreadPool.java:433)
[18:37:47.039] at java.lang.Thread.run(Thread.java:534)
[18:37:47.039] Caused by: java.lang.NoClassDefFoundError: antlr/ANTLRException
[18:37:47.039] at org.hibernate.hql.ast.ASTQueryTranslatorFactory.createQueryTranslator(ASTQueryTranslatorFactory.java:35)
[18:37:47.039] at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:72)
[18:37:47.039] at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
[18:37:47.039] at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
[18:37:47.039] at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
[18:37:47.039] at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
[18:37:47.039] at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583)
[18:37:47.039] at com.jgssdw.product.service.ProductDuration.pagination(ProductDuration.java:58)
[18:37:47.039] at com.jgssdw.product.action.ProductAction.pagination(ProductAction.java:41)
[18:37:47.039] ... 22 more
Shine_Panda 2008-06-11
  • 打赏
  • 举报
回复
sql驱动还有一个只要一个jar包的。
bufeng711 2008-06-11
  • 打赏
  • 举报
回复
不过我记的sql server 没有自带的数据库分页方法,hibernate可以?
songfuqiang 2008-06-11
  • 打赏
  • 举报
回复
我打了补丁的!包也是mssqlserver.jar msutil.jar msbase.jar这三个,应该是最新的吧!
KKK2007 2008-06-11
  • 打赏
  • 举报
回复
很简单
yami251139 2008-06-11
  • 打赏
  • 举报
回复
你的jdbc驱动不支持,可能太旧了或者版本不符,或者你数据库补丁包没打到sp4.。。。
bufeng711 2008-06-11
  • 打赏
  • 举报
回复
你看
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);

我建议你吧分页信息封装成对象,你这么写条理性太差



67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧