Дао имеет методы, которые возвращают завершенные функции. Чтобы избежать получения огромного результата одновременно, я хочу получить его на страницах из дБ. public CompletionStage getAll(List codes) {
return getAllBatch(codes, 1L, PAGE_SIZE);
}
private CompletionStage getAllBatch(List codes, Long pageNumber, Long pageSize) {
return get(codes, pageSize, pageNumber)
.thenCompose(results -> {
if (results.size() < pageSize) {
return completedFuture(results);
}
else {
return getAllBatch(codes, pageNumber + 1, pageSize)
.thenApply(
nextPageResults -> Stream.concat(results.stream(), nextPageResults.stream())
.toList());
}
});
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... ablefuture