JPA Criteria API的分页涉及复杂的标准

时间:2018-04-29 08:03:47

标签: java spring jpa criteria-api

我正在尝试使用JPA条件API对结果进行分页。仔细阅读以下答案:Total row count for pagination using JPA Criteria API

我看到这样做的方法是创建一个单独的查询来计算该特定条件查询返回的行数。 (他们通过创建谓词数组并对计数查询和实际的分页查询使用相同的列表来实现此目的。)

但是,我的条件查询无法通过简单谓词列表进行复制,因为它涉及与其他表和谓词的多个连接,涉及与子查询返回的结果的比较。

我想知道是否有一种方便的方法来获取特定条件查询的行数而不重复查询。 (或者,如果通过传入引用有一种简单的方法来获取条件查询的深层副本)

提前致谢!

1 个答案:

答案 0 :(得分:1)

方便的方式"这样做是为了求助于本机SQL并使用窗口函数。您可以轻松地向顶级SELECT添加一个窗口函数,该函数只计算所有行,如下所示:

SELECT x, y, ..., COUNT(*) OVER()
FROM ...

通过使用SQL而不是JPQL / Criteria API,您可以访问各种其他非常有用的功能,如上所述。