0

这是场景。我有一个页面,其中显示了所有记录列表(没有分页)。

现在在后端,使用每个部分的 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) {

}

我的问题是,因为我有 2 个单独的命名查询,如果我runPaginatedQuery为每个命名查询调用该方法 2 次,它对我没有帮助,因为每次调用的最大结果都会增加。我如何在 Java 端处理同样的问题?我已经准备好处理 UI。

4

1 回答 1

0

我曾经有过类似的问题。不要使用两个查询,使用一个并将其参数化以使其使用LIMIT,并使用例如一个变量来指示当前页面的编号,以及一些定义您将在一页上获得多少结果的常量。

然后你会有类似的东西

 LIMIT :offset, :resultsLimit

并且您正在设置offset为,(page - 1) * DEFAULT_LIMIT_PER_PAGEresultsLimitDEFAULT_LIMIT_PER_PAGE

希望有帮助!

于 2013-11-15T08:27:58.927 回答