Foros del Web » Programación para mayores de 30 ;) » Java »

SUmar el contenido de una columna de una tabla con JPQL

Estas en el tema de SUmar el contenido de una columna de una tabla con JPQL en el foro de Java en Foros del Web. Tengo una tabla de gastos que tiene varias columnas, me interesa obtener unicamente el conjunto de datos "monto" para poder sumar el total de gastos ...
  #1 (permalink)  
Antiguo 27/06/2015, 18:53
Avatar de Hyemin  
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 9 años, 8 meses
Puntos: 0
SUmar el contenido de una columna de una tabla con JPQL

Tengo una tabla de gastos que tiene varias columnas, me interesa obtener unicamente el conjunto de datos "monto" para poder sumar el total de gastos



Probe hacer

Código Java:
Ver original
  1. List resultado;
  2.  Query query;      
  3.          query= em.createQuery("SELECT g.monto FROM Gasto AS g where g.moneda='EU' ");
  4.          resultado = (float)query.executeUpdate();

Obtengo una lista pero no se como recorrerla para obtener un dato X, estoy acosmbrado a usar ArrayLIsts y resulsets donde puedo simplemente hacer un while rs.next() y manipular asi los datos pero no entiendo como manipularlos con el metodo anterior


Como no supe como recorrer la lista probe:

Código Java:
Ver original
  1. Query queryEuros;      
  2. queryEuros = em.createQuery("SELECT SUM (g.monto) FROM Gasto AS g where g.moneda='EU' ");
  3.          resultadoEuros = (float)queryEuros.executeUpdate();

Cuando lo hago me tira una excepcion de que SUM no esta soportado


Tambien probe:
Código Java:
Ver original
  1. float gastos =0;
  2.         Query query = em.createNativeQuery("SELECT SUM(monto) as suma from Gasto where moneda ='EU' ");
  3.         gastos = (float)query.executeUpdate();
  4.         return gastos;

Me da una excepcion generica igual que si hago asi:

Código Java:
Ver original
  1. float gastos =0;
  2.         Query query = em.createNativeQuery("SELECT SUM(monto) as suma from Gasto where moneda ='EU' ", Gasto.class);
  3.         gastos = (float)query.executeUpdate();
  4.         return gastos;

Última edición por Hyemin; 27/06/2015 a las 19:41
  #2 (permalink)  
Antiguo 28/06/2015, 05:31
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: SUmar el contenido de una columna de una tabla con JPQL

Buenas,

¿Puedes copiar la excepción exacta que te da?.


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 28/06/2015, 16:34
Avatar de Hyemin  
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: SUmar el contenido de una columna de una tabla con JPQL

ACtualmente el codigo del metodo que me trae (o deberia traer )la suma de las columnas es

Código Java:
Ver original
  1. float gastos =0;
  2.         Query query = em.createNativeQuery("SELECT SUM(monto) as suma from Gasto where moneda ='EU'", Gasto.class);
  3.         gastos = (float)query.executeUpdate();
  4.         return gastos;

La excepcion es:

Código exception:
Ver original
  1. 19:34:37,351 ERROR [org.jboss.as.ejb3.invocation] (default task-40) JBAS014134: EJB Invocation failed on component EstadisticasControladorImpl for method public abstract float controladores.EstadisticasControlador.getGastosMesCurso(): javax.ejb.EJBTransactionRolledbackException: org.hibernate.exception.GenericJDBCException: could not execute statement
  #4 (permalink)  
Antiguo 29/06/2015, 05:24
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: SUmar el contenido de una columna de una tabla con JPQL

Buenas,

Pero tu decias mas arriba: "me tira una excepcion de que SUM no esta soportado"

No veo que en ningun sitio diga que SUM no esta soportado.

Por otro lado, falta informacion en la excepcion. Deberias recuperar toda la pila de excepcion, ya que en algun sitio te tiene que indicar el error devuelto por el propio gestor de BBDD.

Intenta hacer un printStackTrace o pasar la excepcion al log para poder recuperar toda la pila.

Por otro lado, si ejecutas "SELECT SUM(monto) as suma from Gasto where moneda ='EU'" en tu base de datos directamente te funciona?


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #5 (permalink)  
Antiguo 30/06/2015, 14:23
Avatar de Hyemin  
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: SUmar el contenido de una columna de una tabla con JPQL

Efectivamente, si ejecuto la query nativa en una consola de mi base esta me trae el resultado corectamente (es decir, la suma del valor de todas)

Iba a poner toda la pila pero el foro no me deja

Etiquetas: arraylist, columna, contenido, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:32.