[RES]org.hibernate.QueryParameterException: could not locate named parameter [unidadeParametro]

Está dando esse erro:
na minha pagina HTML:

org.hibernate.QueryParameterException: could not locate named parameter [unidadeParametro]

e minha criteria ta assim:

public List<BalancoLinkUmjAux> buscarGraficoUmjLink(String unidadeBusca) {
        Session session;

        if (em.getDelegate() instanceof EntityManagerImpl) {
            EntityManagerImpl entityManagerImpl = (EntityManagerImpl) em.getDelegate();
            session = entityManagerImpl.getSession();
        } else {
            session = (Session) em.getDelegate();
        }
        
        String sql;
        sql = "select count(OCORRENCIALINK.ID_OCORRENCIALINK) as quantidade, OCORRENCIALINK.ID_UMJ as umj, "
         + "EXTRACT(MONTH FROM OCORRENCIA.DATAEXECUCAO) as mes"
         + "FROM OCORRENCIA "
         + "JOIN OCORRENCIALINK ON OCORRENCIA.ID_OCORRENCIALINK = OCORRENCIALINK.ID_OCORRENCIALINK "
         + "JOIN UMJ ON OCORRENCIALINK.ID_UMJ = UMJ.ID_UMJ "
         + "JOIN UNIDADE ON OCORRENCIA.ID_UNIDADE = UNIDADE.ID_UNIDADE "
         + "WHERE OCORRENCIA.STATUSOCORRENCIA =3 "
         + "AND UNIDADE.UNIDADE = :unidadeParametro"
         + "AND OCORRENCIA.DATAEXECUCAO IS NOT NULL "
         + "AND OCORRENCIALINK.ID_UMJ IS NOT NULL  "
         + "GROUP BY OCORRENCIALINK.ID_UMJ ";
      SQLQuery query = session.createSQLQuery(sql);
      query.setParameter("unidadeParametro",unidadeBusca);
      query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
      query.setResultTransformer(Transformers.aliasToBean(BalancoLinkUmjAux.class)).list();
      List results = query.list();
        return results;
        
    }

eu não to conseguindo colocar a variavel unidadeBusca para o parametro unidadeParamentro para colocar no meu SQL, ele fala que não foi possivel localizar.
Já tentei, mais não estou conseguindo alguem pode me ajudar??

Qual a diferença da linha do meio em relação à primeira e à última?

 + "WHERE OCORRENCIA.STATUSOCORRENCIA =3 "  
         + "AND UNIDADE.UNIDADE = :unidadeParametro"  
         + "AND OCORRENCIA.DATAEXECUCAO IS NOT NULL " 

Veja bem, existe uma pequena diferença e que está causando todo este transtorno.

Vamos lá, não entendi muito bem o que vocês quis dizer

+ "WHERE OCORRENCIA.STATUSOCORRENCIA =3 "    
        + "AND UNIDADE.UNIDADE = :unidadeParametro"    
        + "AND OCORRENCIA.DATAEXECUCAO IS NOT NULL " 

where faz uma condição me dizendo que o status da minha ocorrencia tem que ser = a 3
a linha do meio eu pega a unidade e a descrição, o nome dessa unidade, que deve ser comparado com o nome da unidadeBusca, unidadeParametro que esta vindo como parametro, e a ultima linha é que a data de execução não pode ser nula, é obrigatório ter alguma data la.

Eu ainda não consegui ver o que esta erro, me ajuda, creio que só estou com esse problema para resolver.

AH! ta de sacanagem que é o espaço? vo testar depois posto o que deu.

era um simples espaço, e pensar que perdi 2 dias nisso.

Muito obrigado drsmachado.

[quote=alextr]era um simples espaço, e pensar que perdi 2 dias nisso.

Muito obrigado drsmachado.[/quote]
Para evitar problemas assim, eu costumo criar minhas queries e afins usando a seguinte formatação:

String hql = "SELECT ... \n" + 
"FROM ...\n" + 
"WHERE ...\n";

Desta forma, com a quebra de linha, nunca existirá problemas com espaço.

cara to quase la, estou com esse erro agora:

java.lang.ClassCastException: java.util.HashMap cannot be cast to br.com.rpctv.siseng.entidade.BalancoLinkUmjAux

sabe me dizer o porque dele?

[quote=alextr]cara to quase la, estou com esse erro agora:

java.lang.ClassCastException: java.util.HashMap cannot be cast to br.com.rpctv.siseng.entidade.BalancoLinkUmjAux

sabe me dizer o porque dele?[/quote]

Provavelmente seja por isso

query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);  
 query.setResultTransformer(Transformers.aliasToBean(BalancoLinkUmjAux.class)).list();

mudo o erro agora ta assim:

org.hibernate.PropertyNotFoundException: Could not find setter for QUANTIDADE on class br.com.rpctv.siseng.entidade.BalancoLinkUmjAux

Na sua classe que tem a variavel quantidade, tem o setQuantidade?
Tem que ter lá um public void setQuantidade, ou private, ai basta mapear a variavel com access=“field”

Vou ver mais tem o private e os get e seters só não tem o acess=field

Nunca mexi com fields, dei uma olhada no google, mais alguma ideia de como implementar isso no meu código?