2010-05-29 810 views
5

que estoy tratando de hacer algo que es fácil como pastel en PHP & Co: SELECT COUNT (x) como numItems, AVG (y) como promedio, ... De la ZJPQL: ¿Qué tipo de objetos contiene una lista de resultados al consultar varias columnas?

En PHP me gustaría obtener una matriz simple como [{numItems: 0, media: 0}] que podría utilizar la siguiente manera:

echo "Number of Items: " . $result[0]['numItems']; 

lo general, en JPQL solo consultar objetos individuales o columnas individuales y obtener tipos Listas, por ejemplo List<SomeEntity> o List<Long>. Pero, ¿qué obtienes al consultar columnas múltiples?

Respuesta

5

Obtiene un Object[] (o un List<Object[]>). Desde la sección 4.8.1 Resultado Tipo de la Cláusula SELECT de la especificación JPA 1.0:

El tipo de resultado de la cláusula SELECT se define por las los tipos de resultados de los select_expressions contenidas en eso. Cuando varios select_expressions se utilizan en la cláusula SELECT, el resultado de la consulta es de tipo Object[], y los elementos de este resultado corresponde con el fin de la orden de su especificación en la cláusula SELECT y en el tipo de a los tipos de resultados de cada uno de los select_expressions.

Si desea escribir fuertemente, puede usar una expresión de constructor en la cláusula SELECT. En la sección 4.8.2 Constructor expresiones en la cláusula SELECT:

Un constructor se puede utilizar en la lista SELECT devolver uno o más de Java casos. La clase especificada es no requerida para ser una entidad o ser mapeada en la base de datos. El nombre del constructor debe ser completamente calificado en .

Si se especifica un nombre de clase de entidad en la nueva cláusula SELECT, los instancias de entidad resultantes son en el nuevo estado .

SELECT NEW com.acme.example.CustomerDetails(c.id, c.status, o.count) 
FROM Customer c JOIN c.orders o 
WHERE o.count > 100 
+0

¡Muchas gracias por su respuesta! – Bunkerbewohner

0

También puede utilizar tupla y devolver una lista de tuplas (List<Tuple>) que se puede utilizar como una lista de Mapa.

Cuestiones relacionadas