2014-04-29 77 views
0

我的HQL查詢給我下面的錯誤: java.sql.SQLSyntaxErrorException:表達不被列聚合或GROUP:CIUDAD2_.ID_PAIS集團在休眠錯誤和HQL

我的查詢是:

return getSessionFactory().getCurrentSession().createQuery("select s.ciudadSede.paisCiudad.idPais AS idPais," 
      + "s.ciudadSede.paisCiudad.nombrePais AS nombrePais," 
      + "s.ciudadSede.idCiudad AS idCiudad," 
      + "s.ciudadSede.nombreCiudad AS nombreCiudad," 
      + "case when s.ciudadSede.valorCiudad = null then s.ciudadSede.paisCiudad.valorPais else s.ciudadSede.valorCiudad end AS valor," 
      + "s.tipoJjoo.descripcionTipo AS descripcionTipoJjoo," 
      + "s.ciudadSede.valorCiudad AS numeroVecesSede " 
      + "from Sede s join s.ciudadSede AS c " 
      + "group by c.idCiudad").setResultTransformer(Transformers.aliasToBean(SedeDto.class)).list(); 
} 

我想要的是當你說你要GROUP BY foo由城市

回答

0

分組組「塞德斯」,這意味着該查詢將返回對於表達式的每個不同值的單行爲foo

SQL要求SELECT列表中的每個表達或者是包括在GROUP BY子句中的表達,或聚合功能(例如COUNT()SUM()MIN()MAX()AVG())。 (該規則有一些例外,如文字和確定性函數的結果。)

該錯誤指示查詢的SELECT列表中的表達式不在GROUP BY子句中,或者不是聚合表達。


我不知道,如果你問一個問題,或者如果你只是在向你目前的工作情況的報告...

你確定你想要一個GROUP BY,而不是一個ORDER BY

+0

如果你想的次數由s.tipoJjoo.descripcionTipo s.ciudadSede.idCiudad和重複分組主機,group by子句是: 「由s.ciudadSede.idCiudad組,s.tipoJjoo.descripcionTipo」)並會選擇 +「計數(s)AS numeroVecesSede」 問候和感謝。 – oscar

+0

@oscar:是的,'COUNT()'是一個聚合函數,可以包含在包含「GROUP BY」子句的查詢的SELECT列表中。當您在SELECT列表中添加一個表達式時(這不是聚合,而是GROUP BY子句中的表達式,而不是文字或基於GROUP BY中的表達式的確定性函數)時發生該錯誤。 – spencer7593