2016-08-10 1 views
1

Я не нашел решение такого простого вопроса:Присоединяйтесь к структуре play2 с JPA EntityManager - ResultSet as Map?

Как присоединиться к двум таблицам в рамках 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"}, {...} ] 

Может есть картостроитель?

ответ

0

В среднее время я нашел это решение, которое требует только имена полей в правильном порядке:

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

и функция «волшебной», который вручную преобразовать результат в 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; 
    } 
Смежные вопросы