使用 JPA EntityManager 加入 play2 框架 - ResultSet as Map?
Join in play2 framework with JPA EntityManager - ResultSet as Map?
我没有找到这个简单问题的解决方案:
如何在 play2 框架中连接两个表而不创建结果class?
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"}, {...} ]
也许有映射器?
同时我找到了这个解决方案,它只需要正确顺序的字段名称:
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;
}
我没有找到这个简单问题的解决方案:
如何在 play2 框架中连接两个表而不创建结果class?
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"}, {...} ]
也许有映射器?
同时我找到了这个解决方案,它只需要正确顺序的字段名称:
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;
}