我正在尝试调试下面的问题。我有一个页面,将显示所有的网址链接,这是从我的表在MySQL中获得。它显示每页最多10条记录。下面是它的外观:
现在的问题是,它能够显示记录,但当我单击下一页(第2页)时,它不显示记录,出现错误,但没有显示消息,我无法对其进行调试。据我所知,如果我将更多的记录添加到我的表中,它可以没有问题地显示第2页,但当我试图转到第3页时,同样的事情发生了,并且无法显示这些记录。如下所示:
我相信这是一些计算问题,但我不知道我需要做什么。
这基本上就是我每次“切换”页面时调用的方法:
urlList = nodeFacade.list_url((pageNo - 1) * pageSize, pageSize, sortName, sortorder);
如果我转到第2页,pageNo总是当前page.So的编号,那么pageNo=2
和pageSize肯定是10
。Sortname基本上是我的列名(GenDate),而sortOrder是DESC
。下面是被调用的方法:
public List<UrllinkEntity> list_url(int offset, int limit, String orderBy, String order) {
try {
String sql = "SELECT g FROM UrllinkEntity as g ";
if (orderBy != null) {
sql += "order by lower(" + orderBy + ") " + order;
}
Query q = em.createQuery(sql);
q.setFirstResult(offset);
if (limit != 0) {
q.setMaxResults(limit);
}
List modList = q.getResultList();
return modList;
} catch (Exception e) {
msg = CoreUtil.wrapMsg(CoreUtil.FUNC_ERROR,
this.getClass().getName(), "list_url", e.getMessage());
return null;
}
}
我清楚地调试了每个值,它似乎能够检索值,但不能显示它。那么我是不是做错了什么?
编辑
似乎如果我使用(lastpagenumber-1)*pageSize
,那么它将能够毫无问题地显示每一页,但是每一页都返回与以前相同的10条记录,因此它仍然无法工作。
编辑
从进一步的研究来看,似乎是sortName
导致了这个问题。假设表中有144条记录。sortname
基本上是orderBy,我尝试使用GenDate
,它是表中的一个列,它能够在出现错误之前转到第4页。我尝试将orderBy更改为fileID
另一列,在遇到同样的问题之前,它最多可以显示到第13页。总而言之,有15页要展示。所以我不知道为什么会发生这种情况。
发布于 2019-05-17 07:23:04
我猜也许你的pageNo是错的。在hibernate分页中,pageNo应该是lastPageNumber。
Query selectQuery = session.createQuery("SELECT g FROM UrllinkEntity as g ");
selectQuery.setFirstResult((lastPageNumber - 1) * pageSize);
https://stackoverflow.com/questions/56179130
复制相似问题