весенние данные пагинации возвращают индекс элементов - PullRequest
1 голос
/ 15 октября 2019

Я работаю над проектом весенней загрузки с jpa data и базой данных Oracle. нам нужно использовать собственный запрос. проблема заключается в элементах контента, после того как страница 0 вернет индекс со значением, подобным этому. это проблема для меня!

я написал интерфейс для проецирования, но когда его методы вызывают, не может показать данные !! и я вынужден использовать String как тип возвращаемого значения!

    //Repository
    @Query(value = "select m.COD_USERID_PSTME as codUseridPstme " +
                "from OCM_CHARTS c " +
                "join OCM_UNITS u on u.CHRT_CHARTS_ID =c.CHARTS_ID" +
                " join OCM_POSTS p on p.UNTS_UNITS_ID = u.UNITS_ID " +
                "join OCM_POSTMEM m on m.POST_POSTS_ID = p.POSTS_ID " +
                "where  u.UNTS_UNITS_ID  in (select u.UNTS_UNITS_ID from OCM_UNITS u " +
                "start with u.COD_UNITCODE_UNTS =:unitCode " +
                "and u.CHRT_CHARTS_ID=(select c.CHARTS_ID from OCM_CHARTS c where lower(trim(c.COD_CODE_CHRT)) = lower(trim(:chartCode)) " +
                "and rownum=1) connect by prior u.UNITS_ID=u.UNTS_UNITS_ID and (:lvl=0 or LEVEL < = :lvl))" +
                "and p.STA_POSTSTATE_POST='ACTIVE' and m.STA_MEMBERSTATUS_PSTME='ACTIVE'",
                nativeQuery = true,
                countQuery = "select count(m.POSTMEM_ID) " +
                        "from OCM_CHARTS c " +
                        "join OCM_UNITS u on u.CHRT_CHARTS_ID =c.CHARTS_ID" +
                        " join OCM_POSTS p on p.UNTS_UNITS_ID = u.UNITS_ID" +
                        " join OCM_POSTMEM m on m.POST_POSTS_ID = p.POSTS_ID " +
                        "where  u.UNTS_UNITS_ID  in (select u.UNTS_UNITS_ID  from OCM_UNITS u" +
                        " start with u.COD_UNITCODE_UNTS =:unitCode " +
                        "and u.CHRT_CHARTS_ID=(select c.CHARTS_ID from OCM_CHARTS c where lower(trim(c.COD_CODE_CHRT)) = lower(trim(:chartCode))" +
                        "and rownum=1) connect by prior u.UNITS_ID=u.UNTS_UNITS_ID and (:lvl=0 or LEVEL < = :lvl))" +
                        "and p.STA_POSTSTATE_POST='ACTIVE' and m.STA_MEMBERSTATUS_PSTME='ACTIVE'")
        Page<String> getUnitUsersWithChildByChartCodeAndUnitCodeAndLevel(@Param("chartCode") String chartCode, @Param("unitCode") String unitCode, @Param("lvl") Integer level, Pageable pageable);


    //Service

    @Override
        public Page<String> getUnitUsersWithChildByChartCodeAndUnitCodeAndLevel(String chartCode, String unitCode, Integer level, Pageable pageable, String orderBy, String direction) {
            try {
                Pageable gridPageable = PageRequest.of(pageable.getPageNumber(),pageable.getPageSize(), orderBy != null ? new Sort(Sort.Direction.valueOf(direction), orderBy) : Sort.unsorted());
                return ocmPostmemRepository.getUnitUsersWithChildByChartCodeAndUnitCodeAndLevel(chartCode, unitCode, level, gridPageable);
            }catch (NoResultException e){
                systemLog.info(e.getMessage() + " " + e.getCause());
                return null;
            }
        }

    //Controller

     @PostMapping(path = "/api/v1.0/unitUsersWithChild", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
        public ResponseEntity<Page<?>> getUnitUsersWithChild(@RequestBody Map<String, Object> requestBody, @RequestParam int page, @RequestParam int size, @RequestParam(required = false, name = "orderby") String orderby, @RequestParam(required = false, name = "direction") String direction) {
            String chartCode = (String) requestBody.get("chartCode");
            String unitCode = (String) requestBody.get("unitCode");
            Integer level = (Integer) requestBody.get("level");
            Page<?> gridData = ocmPostmemService.getUnitUsersWithChildByChartCodeAndUnitCodeAndLevel(chartCode, unitCode, level, PageRequest.of(page, size), orderby, direction);

            if (!gridData.isEmpty()) {
    JSONArray((oauthDetailsService.usersOauthDetailLimitService(gridData.getContent()).getBody())));
                return new ResponseEntity<>(gridData,HttpStatus.OK);
            } else {
                return new ResponseEntity<>(HttpStatus.NO_CONTENT);
            }
        }


//in postman page=1 and size=5

{
    "content": [
        [
            "915817",
            6
        ],
        [
            "921850",
            7
        ],
        [
            "918637",
            8
        ],
        [
            "923357",
            9
        ],
        [
            "923103",
            10
        ]
    ],
    "pageable": {
        "sort": {
            "unsorted": true,
            "sorted": false,
            "empty": true
        },
        "offset": 5,
        "pageSize": 5,
        "pageNumber": 1,
        "unpaged": false,
        "paged": true
    },
    "last": false,
    "totalPages": 103,
    "totalElements": 512,
    "size": 5,
    "number": 1,
    "sort": {
        "unsorted": true,
        "sorted": false,
        "empty": true
    },
    "numberOfElements": 5,
    "first": false,
    "empty": false
}


//in postman page=0 and size=5
{
    "content": [
        "923145",
        "920074",
        "921101",
        "920993",
        "921151"
    ],
    "pageable": {
        "sort": {
            "unsorted": true,
            "sorted": false,
            "empty": true
        },
        "offset": 0,
        "pageSize": 5,
        "pageNumber": 0,
        "unpaged": false,
        "paged": true
    },
    "last": false,
    "totalPages": 103,
    "totalElements": 512,
    "size": 5,
    "number": 0,
    "sort": {
        "unsorted": true,
        "sorted": false,
        "empty": true
    },
    "numberOfElements": 5,
    "first": true,
    "empty": false
}

1 Ответ

0 голосов
/ 15 октября 2019

решено!

проблема была в использовании возвращаемого типа String. Потому что возвращаемый тип String неизвестен для пружинных данных jpa, а когда он имеет нумерацию страниц, данные jpa устанавливают индекс для каждого элемента! спасибо всем!

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