Tenho esta consulta, mas a ordenação não está correta, pois está como String.
StringBuilder hql = new StringBuilder("SELECT DISTINCT new IdentificacaoEntity(SUBSTRING(i.mesAnoInicio, 1, 4)) FROM IdentificacaoEntity i ");
hql.append("\n WHERE (i.status = :processadaAssinada ");
hql.append("\n OR i.status = :pago) ");
hql.append("\n AND i.declaracao = :declaracao ");
hql.append("\n AND i.entidade = :entidade ");
hql.append("\n AND i.empresa = :empresa ");
hql.append("\n ORDER BY SUBSTRING(i.mesAnoInicio, 1, 4) DESC ");
Query query = em.createQuery(hql.toString());
query.setParameter("declaracao", declaracao);
query.setParameter("processadaAssinada", StatusIdentificacaoEnum.PROCESSADA_E_ASSINADA);
query.setParameter("pago", StatusIdentificacaoEnum.PAGO);
query.setParameter("empresa", empresa);
query.setParameter("entidade", entidade);
Se coloco assim ORDER BY CAST(SUBSTRING(i.mesAnoInicio, 1, 4) AS Int) DESC
ou assim: ORDER BY CAST(SUBSTRING(i.mesAnoInicio, 1, 4) AS Integer) DESC
Da erro.