Я работаю над проектом весенней загрузки с 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
}