Hibernate分页无法在Java程序中按预期方式工作

时间:2019-05-17 03:20:36

标签: java jpa

我正在尝试调试以下问题。我有一个页面,它将显示从MySQL表中获取的所有URL链接。每页最多显示10条记录。这是它的样子:

enter image description here

现在这里的问题是它可以显示记录,但是当我单击下一页(第2页)时,它不显示记录,并且有错误,但是没有显示消息,因此无法调试。据我所知,如果我在表中添加了更多记录,它可以显示第2页而没有任何问题,但是当我尝试转到第3页时,发生了同样的事情,并且无法显示记录。如下所示:

enter image description here

我认为这是一些计算问题,但我不知道该怎么做。

这基本上是我每次“切换”页面时都要调用的方法:

urlList = nodeFacade.list_url((pageNo - 1) * pageSize, pageSize, sortName, sortorder);

pageNo始终是当前页面的编号。因此,如果我转到第2页,则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页要显示。所以我不知道为什么会这样。

1 个答案:

答案 0 :(得分:1)

我想也许您的pageNo是错误的。在休眠分页中,pageNo应该是lastPageNumber。

df['col2'] = pd.Categorical(df['col2'])