«значение первого результата не может быть отрицательным», полученное для четных номеров страниц, превышающих максимальный размер страницы набора результатов - PullRequest
0 голосов
/ 02 мая 2020

У меня странное поведение, которое я не могу понять, почему.

// Контроллер

@GetMapping(value = MasterURI.MST_AVAILABLE_BALANCE_DESCRIPTION+MasterURIAPI.GET_MST_AVAILABLE_BALANCE_DESCRIPTION_ALL)
    @ApiOperation("Get list of unsorted all MstAvailableBalanceDescription")
    public AppResponse<List<MstAvailableBalanceDescriptionResponseDto>> readAll(
            @ApiParam(value =  AdminURI.PAGENUMBER_OPTIONAL_MSG) @RequestParam(required = false, defaultValue = "0") Integer pageNumber,
            @ApiParam(value = AdminURI.PAGESIZE_OPTIONAL_MSG) @RequestParam(required = false, defaultValue = ""+ Integer.MAX_VALUE) Integer pageSize) {
            try {
                MstAvailableBalanceDescriptionListResponseDto response = this.mstAvailableBalanceDescriptionService.readAll(pageNumber, pageSize);
                return AppResponse.okList(response.getMstAvailableBalanceDescriptionListResponseDto(), pageSize, pageNumber,
                        response.getPagingResponseDto().getTotalRecords());
            }catch (Exception e) {
                return AppResponse.error(HttpStatus.BAD_REQUEST.toString(), e.getStackTrace()[0].getClassName(),
                    e.getStackTrace()[0].getMethodName(), e.getMessage());
            }
    }

// ServiceImpl

@Override
    public MstAvailableBalanceDescriptionListResponseDto readAll(Integer pageNumber, Integer pageSize) throws ApplicationException {
        List<MstAvailableBalanceDescriptionResponseDto> responseList = new ArrayList<>();
        Pageable pageable = PageRequest.of(pageNumber, pageSize);
        Page<MstAvailableBalanceDescription> data = this.mstAvailableBalanceDescriptionRepository.findAll(pageable);
        data.getContent().forEach(item -> {
            responseList.add(mstAvailableBalanceDescriptionResponseDtoBuilder.buildCreateResponseDto(item));
        });
        return MstAvailableBalanceDescriptionListResponseDto.builder()
            .mstAvailableBalanceDescriptionListResponseDto(responseList)
            .pagingResponseDto(PagingResponseDto.builder().pageNumber(data.getPageable().getPageNumber())
            .pageSize(data.getPageable().getPageSize()).totalRecords(data.getTotalElements()).build())
            .build();
    }

// Репозиторий

Page<MstAvailableBalanceDescription> findAll(Pageable pageable);

У меня есть 2 примера данных в таблице для вызова API для запроса, v1 / master / available-balance-description? PageNumber = 0 & pageSize = 2147483647 Я получаю все доступные записи. для запроса v1 / master / available-balance-description? pageNumber = 1 & pageSize = 2147483647 и для всех нечетных чисел для "pageNumber" я получаю значение ниже

{
"data": [],
"meta": {
"code": 1,
"message": "Success"
},
"error": null,
"paging": {
"page_number": 1,
"page_size": 2147483647,
"total_records": 5
}
}

для v1 / master / available-balance-description ? pageNumber = 2 & pageSize = 2147483647 и для всех четных чисел для "pageNumber" я получаю значение ниже

{
"data": null,
"meta": {
"code": 0,
"message": "Error"
},
"error": {
"status": "400 BAD_REQUEST",
"source": "org.springframework.orm.jpa.EntityManagerFactoryUtils",
"title": "convertJpaAccessExceptionIfPossible",
"detail": "first-result value cannot be negative : -2; nested exception is java.lang.IllegalArgumentException: first-result value cannot be negative : -2"
},
"paging": null
}

Может кто-нибудь сказать мне, что я сделал неправильно. Заранее спасибо

Нихал

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...