2011-01-06 8 views
5

tengo el siguiente códigoProjections.countDistinct con Hibernate produce resultado inesperado


Criteria criteria = this.getCriteriaForClass(DeviceListItem.class); 
Projection rowCountProjection = Projections.countDistinct("color"); 
criteria.setProjection(rowCountProjection); 
int rowCount = ((Long) criteria.uniqueResult()).intValue(); 
return rowCount; 

, cuyo propósito es averiguar el número de filas con diferentes valores para el campo denominado "color". El problema es que


Projections.countDistinct("color"); 

devuelve el mismo número de resultados como


Projections.count("color"); 

pesar de que hay varias filas con el mismo color en la vista de la base de datos. Al convertir el objeto Criteria a SQL, veo que el SQL producido por Hibernate es


select count(this_.COLOR) as y0_ from DEVICESLIST_VIEW this_ where 1=1 

cuando yo esperaba que fuera


select count(distinct this_.COLOR) as y0_ from DEVICESLIST_VIEW this_ where 1=1 

¿por qué no funcionan como se esperaba y hay alguna ¿remedio? Desafortunadamente no tengo opción de usar HQL en este caso.

Respuesta

Cuestiones relacionadas