首页 > 解决方案 > 使用原生查询实体管理器获取 jsonArray

问题描述

我有一个服务类如下:

public class RulesService {
    @PersistenceContext
    private EntityManager em;

    public  JSONArray getReportingTableData(String Query) {
        List<Object> list = em.createNativeQuery(Query).getResultList();

        return /*convert the above list as json array**/;
    }
}

所以,如果查询是“select col1 as name,col2 as agefrom table1”那么我的 jsonArray 应该是

[{"name":"test","age":"24"},{"name":"test1","age":"26"}]

我不想在这里使用 pojo 或实体类,因为查询会动态变化并且这里有很多表,所以我不想为每个表创建单独的 java 类。这就是我尝试的原因使其成为 JSONArray。

谁能给我正确的解决方案。

标签: javajsonspringjava-8hibernate-entitymanager

解决方案


我猜你想像下面这样。您的查询结果是数组列表。[["test","24"],["test2","26"]]你想把它转换成key-value

List<Map<String,String>> result = listOfarray.stream()
                          .map(arr->{
                              Map<String,String> map = new HashMap<>();  
                              map.put("name",arr[0]); 
                              map.put("age",arr[1]); 
                              return map; 
                            })
                         .collect(Collectors.toList());

推荐阅读