Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate分页在Java程序中未按预期工作_Java_Jpa - Fatal编程技术网

Hibernate分页在Java程序中未按预期工作

Hibernate分页在Java程序中未按预期工作,java,jpa,Java,Jpa,我正在尝试调试下面的问题。我有一个页面,它将显示从MySQL中的表中获得的所有URL链接。它显示每页最多10条记录。下面是它的样子: 现在这里的问题是,它能够显示记录,但当我单击下一页(第2页)时,它不会显示记录,出现错误,但不会显示消息,我无法调试它。据我所知,如果我向表中添加更多记录,它可以显示第2页,没有问题,但当我尝试转到第3页时,同样的情况发生,并且无法显示记录。如下所示: 我相信这是一些计算问题,但我不知道我需要做什么 这基本上就是我每次“切换”页面时调用的方法: pageNo始

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

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

我相信这是一些计算问题,但我不知道我需要做什么

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

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;
        }
    }
公共列表\u url(整数偏移量、整数限制、字符串排序依据、字符串顺序){
试一试{
String sql=“从urlinkentity中选择g作为g”;
if(orderBy!=null){
sql+=“下单(“+orderBy+”)+下单;
}
Query q=em.createQuery(sql);
q、 setFirstResult(偏移量);
如果(限制!=0){
q、 setMaxResults(限制);
}
List modList=q.getResultList();
返回modList;
}捕获(例外e){
msg=CoreUtil.wrapMsg(CoreUtil.FUNC_错误,
this.getClass().getName(),“list_url”,e.getMessage();
返回null;
}
}
我清楚地调试了每个值,它似乎能够检索值,但无法显示它。那么,我做错什么了吗

编辑 似乎如果我使用
(lastpagenumber-1)*pageSize
,那么它将能够显示没有问题的每一页,但是每一页都返回与以前相同的10条记录,因此它仍然不起作用

编辑
通过进一步研究,似乎是
sortName
导致了这个问题。假设我在表中有144条记录。
sortname
基本上是orderBy,我尝试使用
GenDate
,这是该表中的一列,在给出错误之前可以转到第4页。我尝试将orderBy更改为
fileID
另一列,在遇到相同问题之前,它可以显示到第13页。总而言之,有15页要展示。所以我不知道为什么会发生这种情况。

我想也许你的页码错了。在hibernate分页中,pageNo应该是lastPageNumber

Query selectQuery = session.createQuery("SELECT g FROM UrllinkEntity as g ");
selectQuery.setFirstResult((lastPageNumber - 1) * pageSize); 

但我遵循我类型的其他模块,它们按照我的方式遵循相同的编码标准,模块显示没有问题。例如,显示所有用户。@Daredevil,我不是指参数名称,我猜这个方法接收到错误的页码。好吧,它不起作用,我可以去每一页没有错误,但每一页只是返回相同的10条记录before@Daredevil,我不确定前端如何调用此方法。您可以检查该代码以确保后端收到正确的PageNumber。我检查了很多次,因为每次我进入“第4页”,它都不会显示并显示错误(在屏幕截图中)。从我注意到的情况来看,如果我截断表中的所有记录并添加新记录,它就能够显示所有记录。不知道发生了什么事我是个胆大包天的人。请记住,恳求帮助、你们坚持了多久,以及其他旨在让读者同情你们的悲惨故事在这里并不理想。从你的角度来看,这也不理想,因为你正在鼓励自己进入一种无助的状态。社区对这种心理现象以及我们可以鼓励问题作者尝试自立的方式进行了讨论。改变策略会让你受益(不仅仅是你的问题是如何被接受的),但它会减轻读者的情绪负担。总的来说,我们在讲台上乞讨的次数很多,对于那些希望得到正常治疗的志愿者来说,乞讨的次数可能会减少。
Query selectQuery = session.createQuery("SELECT g FROM UrllinkEntity as g ");
selectQuery.setFirstResult((lastPageNumber - 1) * pageSize);