环境:SpringBoot+JPA
查询方式为复杂生成JPQL语句
Query query2 = entityManager.createQuery(sql2); query2.setFirstResult(start); query2.setMaxResults(size); List<Map<String,String>> lists2 = query2.getResultList();
但是有一个问题,生成的集合通过PagedResponse往前台传过去后在swaggerUI接收后只有value,没有key,没有在这里我打算用一个新的集合手动把key给对应上,但是把原集合遍历的时候就出问题了,无论是foreach还是for循环都会报错。
就是这个 java.lang.ClassCastException: [Ljava.lang.Object;XXXX
解决方法:
Query query2 = entityManager.createQuery(sql2); query2.setFirstResult(start); query2.setMaxResults(size); List<Object[]> lists2 = query2.getResultList(); List<Map<String,String>> mapList = new ArrayList<>(); Object[]len = null; if(lists2!=null && lists2.size()>0){ for(int i=0;i<lists2.size();i++){ len = lists2.get(i); Map<String,String> stringMap = new HashMap<>(); stringMap.put("id",len[0]!=null?len[0].toString():null); mapList.add(stringMap); } }
把查询出来的List集合存放的元素编程Object数组,然后按照顺序取数组中的值放到新集合中,就ok了,但切记数组中的值转为String时一定要加上条件表达式,否则为空时会报空指针。