2011-08-05 28 views
13

Si mi entidad se obtiene como el hombre, que tienen nombre, propiedades ID, con JPA cómo consigo recuperar como resultado esta consulta,¿Cómo obtener valores SELECT y COUNT value con JPA GROUP BY?

entityManager.createQuery("SELECT m.name AS name, COUNT(m) AS total FROM Man AS m GROUP BY m.name ORDER BY m.name ASC"); 

¿Hay alguna manera de utilizar org.springframework.jdbc.core.RowMapper con APP?

Respuesta

35

Cuando ejecuta esta consulta, en lugar de obtener directamente una lista de objetos como de costumbre, obtendrá una lista de Object[].

Para cada matriz que recupere, el primer elemento será el nombre de la fila, el segundo el recuento.

No creo que pueda usar un RowMapper con JPA. RowMapper viene de Spring, que no es el mismo marco que JPA. Quizás alguna implementación de JPA lo permita, pero no creo que sea aconsejable hacerlo.

Editar - Ejemplo de código:

List<Object[]> results = entityManager 
     .createQuery("SELECT m.name AS name, COUNT(m) AS total FROM Man AS m GROUP BY m.name ORDER BY m.name ASC"); 
     .getResultList(); 
for (Object[] result : results) { 
    String name = (String) result[0]; 
    int count = ((Number) result[1]).intValue(); 
} 
+0

Hola Barousse! Muchas gracias por tu retroalimentación. Si lo has hecho, ¿podrías poner un ejemplo de código que pueda recuperar datos como una lista de "Objeto []", porque aún no tengo idea de cómo unir estos resultados a algún objeto. Gracias. – Channa

+0

@Channa: Ejemplo de código agregado en la respuesta :) –

+0

¡Hola Barousse! Muchas gracias por su excelente respuesta, funciona bien :), ¡pasen un buen rato! – Channa