【问题标题】:Join in play2 framework with JPA EntityManager - ResultSet as Map?使用 JPA EntityManager 加入 play2 框架 - ResultSet 作为地图?
【发布时间】:2016-08-10 17:22:43
【问题描述】:

我没有找到这个简单问题的解决方案:

play2框架中如何在不创建结果类的情况下连接两个表?

EntityManager em = JPA.em();
Query q = em.createQuery("SELECT a.name, b.birthday FROM TABLE a JOIN TABLE b");
List<Object> l = q.getResultList();

json 映射器将这个没有字段名映射到:

[ {"name", "12/10/2016"}, {..} ]

如何获得最简单的方法:

[{ name:"name", birthday:"12/10/2016"}, {...} ]

也许有一个映射器?

【问题讨论】:

    标签: java jpa playframework playframework-2.0


    【解决方案1】:

    与此同时,我找到了这个解决方案,它只需要正确顺序的字段名称:

    String[] fields = {"id","name","birthday","email"};
    return resultToHashmap(q.getResultList(), fields);
    

    还有 'magic' 函数,它手动将结果转换为 Hashmap。

      private static List<Map<String, Object>> resultToHashmap(List<Object[]> resultList, String[] fieldNames ){
    
            List<Map<String, Object>> resultMap  = new ArrayList();
            for (Object[] result : resultList){
                HashMap<String,Object> row = new HashMap<String, Object>(result.length);
                for (int i=0;i<result.length;i++){
                    row.put(fieldNames[i],result[i]);
                }
                resultMap.add(row);
            }
            return resultMap;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-02
      • 2011-01-26
      • 1970-01-01
      • 2023-04-11
      • 2014-05-04
      • 1970-01-01
      • 2023-04-03
      • 2013-09-05
      相关资源
      最近更新 更多