miércoles, 29 de diciembre de 2010

Seam: Error en org.jboss.seam.framework.Query.getCountEjbql()

Este método que genera la consulta para obtener el número de resultados posee varios errores/limitaciones a tener en cuenta.
1) Produce un error si la consulta contiene group by con más de un campo:
Este error se corrige modificando el código para que use count(*) en lugar de count(distinct + getGroupBy).
2) Aún corrigiendo lo anterior falla si la consulta posee más de un group by, ejemplo:
select e ..... where e.propiedad in (select o .... group by o.propiedad) group by e.propiedad.
La consulta anterior se podría resolver cambiando el group by de la subconsulta por distinct o.propiedad1,o.propiedad2 si sólo deseamos eliminar duplicados, pero en otro tipo de consultas que se necesite group by no sería posible.