我在为Grid实现延迟加载时遇到问题。以下代码表示DataProvider:
private DataProvider<ReservationDTO, Void> buildDataProvider() {
return DataProvider.fromCallbacks(
query -> {
final List<SortDTO.OrderDTO> orders = query.getSortOrders().stream()
.map(queryOrder -> SortDTO.OrderDTO.builder()
.property(queryOrder.getSorted())
.direction(queryOrder.getDirection() == SortDirection.DESCENDING ? DirectionEnum.ASC : DirectionEnum.DESC)
.build()
)
.collect(Collectors.toList());
if (orders.isEmpty()) {
orders.add(SortDTO.OrderDTO.builder()
.property("createdAt")
.direction(DirectionEnum.ASC)
.build());
}
final FindReservationsRequestDTO request = FindReservationsRequestDTO.builder()
.criteria(buildSearchCriteria())
.sort(SortDTO.builder()
.orders(orders)
.build())
.build();
return reservationsResource.getAllReservations(request, query.getOffset(), query.getLimit()).getContent().stream();
},
query -> reservationsResource.getReservationCount(FindReservationsRequestDTO.builder()
.criteria(buildSearchCriteria())
.build())
);
}
如果我理解正确,&#34;抵消&#34;和&#34;限制&#34;查询的值必须由Vaadin自动定义。但是当我调试上面代码的和平时,我可以看到offset = 0,limit = 2147483647.这意味着来自数据库的所有数据都是由第一个且只有一个查询加载的。所以,在这种情况下,延迟加载没有任何意义。
请帮助理解我做错了什么!