Alguem já usou, HQL case?

tenho o seguinte HQL:

select new Map(registroPonto.pessoa.departamento as departamento, sum(case when registroPonto.status = 'C' then 1 else 0 end) as completo, sum(case when registroPonto.status = 'A' then 1 else 0 end) as incompleto, sum(case when registroPonto.status = 'T' then 1 else 0 end) as inconsistente, sum(case when registroPonto.status = 'I' then 1 else 0 end) as incorreto, sum(case when registroPonto.status = 'P' then 1 else 0 end) as periodoAusencia) from br.com.sintesis.dex.dmn.DexRegistroPontoDmn registroPonto where registroPonto.data between :dataInicial and :dataFinal and registroPonto.pessoa.cartao is not null and registroPonto.pessoa.status = 'A' and registroPonto.pessoa.departamento.id = :departamentoId group by registroPonto.pessoa.departamento

Ao tentar executar query.list();

erro que retorna:

java.lang.NullPointerException
at org.hibernate.hql.NameGenerator.generateColumnNames(NameGenerator.java:23)
at org.hibernate.hql.ast.SessionFactoryHelper.generateColumnNames(SessionFactoryHelper.java:208)
at org.hibernate.hql.ast.SelectClause.initializeColumnNames(SelectClause.java:218)
at org.hibernate.hql.ast.SelectClause.finishInitialization(SelectClause.java:208)
at org.hibernate.hql.ast.SelectClause.initializeExplicitSelectClause(SelectClause.java:202)
at org.hibernate.hql.ast.HqlSqlWalker.useSelectClause(HqlSqlWalker.java:440)
at org.hibernate.hql.ast.HqlSqlWalker.processQuery(HqlSqlWalker.java:351)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.afterQuery(HqlSqlBaseWalker.java:126)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:471)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:201)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:151)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:189)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:130)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83)
at org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:422)
at org.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:822)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:782)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at br.com.sintesis.bus.registroPonto.RegistroPontoDao.getRegistroPontoNovo(RegistroPontoDao.java:242)
at br.com.sintesis.bus.registroPonto.RegistroPontoSrv.consultaRegistroStatus(RegistroPontoSrv.java:112)

O hibernate tem problemas com case no HQL ?

vc não está usando alguma variável nula que o hibernate não está conseguindo executar??? Dá uma verificada nos valores atuais quando está executando esse trecho de código

Problema que meu trecho de código não dá erro. Dá erro somente ao executar a linha:

List lista = query.list();

try{
   Session session = HbnUtil.getCurrentSession();
   StringBuffer hqlList = new StringBuffer();
   hqlList.append("select new Map(registroPonto.pessoa.departamento as departamento,").append(
   "sum(case when registroPonto.status  = 'C' then 1 else 0 end) as completo,").append(
   "sum(case when registroPonto.status  = 'A' then 1 else 0 end) as incompleto,").append(
   "sum(case when registroPonto.status  = 'T' then 1 else 0 end) as inconsistente,").append(
   "sum(case when registroPonto.status  = 'I' then 1 else 0 end) as incorreto,").append(
   " sum(case when registroPonto.status  = 'P' then 1 else 0 end) as periodoAusencia)").append(     
   " from br.com.sintesis.dex.dmn.DexRegistroPontoDmn registroPonto").append(
   " where registroPonto.data between :dataInicial and :dataFinal").append(
   " and registroPonto.pessoa.cartao is not null").append(
   " and registroPonto.pessoa.status = 'A'").append(
   " group by registroPonto.pessoa.departamento");
   Query query = session.createQuery(hqlList.toString());
   query.setDate("dataInicial", dataInicial);
   query.setDate("dataFinal", dataFinal);
   List lista = query.list(); //-----Aqui dá o erro.
} catch (Throwable e) {
   throw Util.getBaseException(e);
}

Mesmo assim…se vc estiver passando algum argumento nulo, tipo alguma data, só vai dar erro quando vc executar a query.list() e não na hora de setar os dados para a query

O problema era a versao do hibernate que nao aceitava … so aceita case apartir da 3.2.