0

我在为 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())
    );
}

如果我理解正确,查询的“偏移”和“限制”值必须由 Vaadin 自动定义。但是当我调试上面的代码时,我可以看到偏移量 = 0,限制 = 2147483647。这意味着数据库中的所有数据都是由第一个且只有一个查询加载的。因此,在这种情况下,延迟加载没有任何意义。

请帮助理解我做错了什么!

4

0 回答 0