getSingleResult

5 respostas
A

Boa noite pessoal. Estou com o seguinte problema.

Possuo o seguinte código

StringBuilder sb = new StringBuilder();
        sb.append("select count(cliente.bloqueio_cod) ");
        sb.append(",count(case when situacao.id = 1 then situacao.id end) ");
        sb.append(",count(case when situacao.id = 31 then situacao.id end) ");
        sb.append(",count(case when situacao.id = 34 then situacao.id end) ");
        sb.append(",count(case when situacao.id > 34 then situacao.id end) ");
        sb.append("from cliente.clienteEmpresa cliente ");
        sb.append("left join cliente.classe_social classe ");
        sb.append("on cliente.classe_social_id = classe.id ");
        sb.append("inner join cliente.situacao situacao ");
        sb.append("on cliente.bloqueio_cod = situacao.codigo ");
        sb.append("where cliente.endereco_cep between ?1 and ?2 ");
        sb.append("and classe.codigo = ?3");

        Object objResult =  entityManager.createNativeQuery(sb.toString())
            .setParameter(1, Long.parseLong(cep_inicial))
            .setParameter(2, Long.parseLong(cep_final))
            .setParameter(3, classe_social)
            .getSingleResult();
        
        Object[] arrayObject = new Object[4]; 
        arrayObject = (Object[])objResult;

Onde executo um select que trás um registro com 5 colunas. Passando os parametros para a consulta, o resultado esperado seria 65 25 1 0 39, porém quando vou ler o conteúdo do array o que recebo é 65 65 65 65 65.
Acredito que deva ser algum tipo de problema com o getSingleResult, mas como se trata de apenas 1 registro, nao vi necessidade de utilizar o getResultList.
Alguem tem alguma idéia?

5 Respostas

Hebert_Coelho

Se você executar com getResultList funciona?

pmlm

Que bd é?
Experimenta definir alias para as colunas.

Hebert_Coelho

Você também poderia criar um objeto que receberia o resultado da query.
Você poderia criar uma classe e faria tipo select new com.MinhaClasse(valor1, valor2). E essa classe não precisa ser uma Entity.

Aqui mostra como fazer: JPA Consultas e Dicas

A

pmlm:
Que bd é?
Experimenta definir alias para as colunas.

É um Postgresql…com o alias funcionou. Perfeito.

Muito obrigado!

A

jakefrog:
Você também poderia criar um objeto que receberia o resultado da query.
Você poderia criar uma classe e faria tipo select new com.MinhaClasse(valor1, valor2). E essa classe não precisa ser uma Entity.

Aqui mostra como fazer: JPA Consultas e Dicas

Essa é a minha intenção. Vou dar uma olhada no site.
Vlw. Muito obrigado.

Criado 21 de junho de 2012
Ultima resposta 22 de jun. de 2012
Respostas 5
Participantes 3