I am setting the type for sql query result set as List in java. I am trying to convert it into a dto. When I see the List<Object[]> structure from query. It shows
resultList-ArrayList<E> [0....9999] [0..99] [0]=Object[3] [0]="jjj" [1]="8787" [2]="7686"
So is this expected. How can I access the object values here(jjj,8787…) by setting it to dto.
I tried something like this
List<Dto> dtoList = resultList.stream().map(obj->{ Dto dt = new Dto() dt.setName(obj[0]); ).collect(Collectors.toList())
This is not correct as I am not able to access the object Should I do another level of iteration in order to reach that object or is my generic type for result set is right
Thanks
Advertisement
Answer
Try this:
Object[] inner = new Object[]{"jjj", "8787", "7686"}; Object[] outer = new Object[]{inner}; List<Object[]> resultList = new ArrayList<>(); resultList.add(outer); List<Dto> dtos; dtos = resultList.stream() .flatMap((Object[] objArr) -> { Object[] subArr = (Object[]) objArr[0]; return Arrays.asList(subArr).stream() .map(obj -> obj.toString()); }) .map(name -> { Dto dto = new Dto(); dto.setName(name); return dto; }) .collect(Collectors.toList());