以下是该方案。我有一个页面,其中包含所有记录列表(没有分页)。
现在在后端,检索记录,每个部分有2个单独的命名查询(实际记录/ part1 / part2的计数各一个);
@NamedQuery(name = "CustomDOTO.findPart1", query = "SELECT part1";
@NamedQuery(name = "CustomDOTO.findPart1Count", query = "SELECT count(part1)";
@NamedQuery(name = "CustomDOTO.findPart2", query = "SELECT part2";
@NamedQuery(name = "CustomDOTO.findPart2Count", query = "SELECT count(part2)";
现在我需要实现相同的分页。 所以我使用自定义类PagedResponse 实际上只包含两件事;
private Long totalRecords;
private List<T> records;
我还使用自定义方法runPaginatedQuery来返回分页响应;
protected <T> PagedResponse<T> runPaginatedQuery(Query query, Query cntQuery, int startingResult, int maxResults) {
}
我的问题是因为我有两个单独的命名查询,如果我为每个命名查询调用runPaginatedQuery方法2次,它对我没有帮助,因为每次调用时最大结果会增加。 我如何在Java端处理相同的问题?请告诉我。 我已经准备好处理UI了。
答案 0 :(得分:0)
我曾经遇到过类似的问题。不要使用两个查询,使用一个并对其进行参数化以使其使用LIMIT
,并使用一个表示当前页面编号的变量,以及一些常量来定义一页上将获得多少结果。< / p>
然后你会有像
这样的东西 LIMIT :offset, :resultsLimit
您将offset
设置为(page - 1) * DEFAULT_LIMIT_PER_PAGE
和resultsLimit
至DEFAULT_LIMIT_PER_PAGE
希望有所帮助!