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

[SOLUCIONADO] Consulta hibernate avg()

Estas en el tema de Consulta hibernate avg() en el foro de Java en Foros del Web. Estoy tratando de averiguar la media de puntuacion de unos mensajes. La tabla es: un mensaje tiene varias respuestas, cada linea de respuesta tiene un ...
  #1 (permalink)  
Antiguo 30/05/2015, 10:51
 
Fecha de Ingreso: enero-2005
Mensajes: 85
Antigüedad: 19 años, 2 meses
Puntos: 0
Consulta hibernate avg()

Estoy tratando de averiguar la media de puntuacion de unos mensajes.

La tabla es: un mensaje tiene varias respuestas, cada linea de respuesta tiene un id de mensaje para la relacion.

La consulta quedaria asi:

select avg(r.valoracion) from Respuesta r left join fetch r.mensaje m where m.tipo='valoracion' and m.usuarioDestino.id=1

Pero me lanza la siguiente excepción:

Código:
org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list [FromElement{explicit,not a collection join,fetch join,fetch non-lazy properties,classAlias=m,role=com.blabla.modelo.Respuesta.mensaje,tableName=blabla.mensaje,tableAlias=mensaje1_,origin=blabla.respuesta respuesta0_,columns={respuesta0_.idMensaje ,className=com.blabla.modelo.Mensaje}}] [select avg(r.valoracion) from com.blabla.modelo.Respuesta r left join fetch r.mensaje m where m.tipo='valoracion' and m.usuarioDestino.id=1]
	at org.hibernate.QueryException.generateQueryException(QueryException.java:137)
	at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:120)
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:234)
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158)
	at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:126)
	at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:88)
	at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:190)
	at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301)
	at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236)
	at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1796)
Caused by: org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list [FromElement{explicit,not a collection join,fetch join,fetch non-lazy properties,classAlias=m,role=com.blabla.modelo.Respuesta.mensaje,tableName=blabla.mensaje,tableAlias=mensaje1_,origin=blabla.respuesta respuesta0_,columns={respuesta0_.idMensaje ,className=com.blabla.modelo.Mensaje}}]
	at org.hibernate.hql.internal.ast.tree.SelectClause.initializeExplicitSelectClause(SelectClause.java:227)
	at org.hibernate.hql.internal.ast.HqlSqlWalker.useSelectClause(HqlSqlWalker.java:923)
	at org.hibernate.hql.internal.ast.HqlSqlWalker.processQuery(HqlSqlWalker.java:691)
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:663)
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:299)
	at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:247)
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:278)
	at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:206)
	... 9 more
__________________
Videos Graciosos
  #2 (permalink)  
Antiguo 30/05/2015, 13:51
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: Consulta hibernate avg()

Buenas,

Lee con atención el mensaje de error que te está devolviendo:
Cita:
query specified join fetching, but the owner of the fetched association was not present in the select list
Ese join que estás haciendo no tiene ningún sentido cuando lo que estás obteniendo es sólo el valor de la media mediante una función de agregación.

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 05/06/2015, 12:15
 
Fecha de Ingreso: enero-2005
Mensajes: 85
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Consulta hibernate avg()

Es cierto, he modificado el join ahora es correcto muchas gracias y disculpa no haber respondido antes, no me llegó la alerta :/
__________________
Videos Graciosos

Etiquetas: hibernate, sql, valor
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 17:14.