Страница ответа Rest Controller <ObjectDto>возвращение пустого объекта - PullRequest
0 голосов
/ 25 февраля 2019

Я использовал Spring Data Pageable для реализации подкачки и сортировки.Мой соответствующий фрагмент кода:

    //GET API designed as POST due to Request Body, in lines of ES APIs
    @PostMapping(value = "/v2")
    public Page<ObjectDto> getObjects(@RequestBody @Valid Map<Integer, FilterRequestDto> filterDtoMap, Pageable pageable) {
        Page<ObjectDto> objectDtos = myService.getDtos(filterDtoMap, pageable);
        log.info(String.valueOf(objectDtos.getTotalElements()));
        return objectDtos;
    }

Хотя у меня есть данные (подтвержденные из журнала), вышеуказанный API отвечает {} .

Однако, когда я возвращаю List, как в следующем фрагменте:

    @PostMapping(value = "/v2")
    public List<ObjectDto> getObjects(@RequestBody @Valid Map<Integer,FilterRequestDto> filterDtoMap, Pageable pageable) {
        Page<ObjectDto> objectDtos = myService.getDtos(filterDtoMap, pageable);
        log.info(String.valueOf(objectDtos.getTotalElements()));
        return objectDtos.getContent();
    }

Ответ для типа возврата List для точно такого же API является правильным ответом, как и ожидалось:

[{"sellingPrice": 23000, "id": 1, "version": 1, "creationOn": "25 февраля 2019,05: 53", "lastUpdatedOn": "25 февраля 2019,05: 53"}]

Код репозитория:

@Repository
public interface MyObjectRepository extends JpaRepository<MyObject, Long>, JpaSpecificationExecutor<MyObject> {}

Сервисный код:

public Page<ObjectDto> getTyres(Map<Integer, FilterRequestDto> filterDtoMap, Pageable pageable) {
        List<FilterDto> filterDtoList = filtersService.getAllFiltersById(filterDtoMap.keySet());
        return objectMapper.toDto(myObjectRepository.findAll(ObjectSpecs.filter(filterDtoList, filterDtoMap), pageable));
    }

Насколько я знаю, мы можем вернуть страницу как ответ API Restтак в чем тут проблема?Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 25 февраля 2019

Не используйте Page<ObjectDto> в качестве возвращаемого типа методов отдыха.Эта страница не для этого.используйте тип возврата как List<ObjectDto>

и в журнале вы печатаете

log.info(String.valueOf(objectDtos.getTotalElements()));

, поэтому его печать выполняется правильно, если вы вернете objectDtos.getTotalElements() в методе rest, тогда онтакже будет работать

...