问题原因:使用JPA 自己写SQL 返回的数据集合不能被更改
灵感来源:https://my.oschina.net/u/4339087/blog/3306199
解决方法:新建一个集合把过滤好的数据直接放入新集合
代码如下:
repository 层:
@Query(value = "select * from aaa", nativeQuery = true)
List<Map<String,Object>> queryAAA();
serviceImpl层 方法1
List<Map<String,Object>> lists = xxxRepository.queryAAA();
for (Map<String, Object> map : lists) {
map.entrySet().removeIf(m -> {
System.out.println(m.getKey());
Boolean flag = "RO".equals(m.getKey());
return flag;
});
for (Map.Entry<String, Object> entry : map.entrySet()) {
System.out.println("Key:" + entry.getKey() + "\nValue:" + entry.getValue());
}
}
执行该方法,Map 中的数据不能过滤但是也不报错,原因就是因为JPA返回的数据不能被更改
serviceImpl层 方法2
List<Map<String,Object>> lists = xxxRepository.queryAAA();
for (Map<String, Object> map : lists) {
map.entrySet().remove("RO") //这行报错
for (Map.Entry<String, Object> entry : map.entrySet()) {
System.out.println("Key:" + entry.getKey() + "\nValue:" + entry.getValue());
}
}
报错如下:
java.lang.UnsupportedOperationException: A TupleBackedMap cannot be modified.