Resolvendo o assombroso problema do java.lang.NumberFormatException: For input string:

Resolvendo o assombroso problema do java.lang.NumberFormatException: For input string:

Bom dia a todos,

Enquanto trabalhava no desenvolvimento de alguns cases de um projeto WEB me deparei com um problema que até o momento eu não tinha visto, simplesmente ao tentar executar uma lógica JSP que tivesse uma listagem de dados o servidor gerava uma exceção com a seguinte mensagem:

Me bati um tempo até entender o que estava realmente acontecendo, mas vamos a completa explicação do acontecido:

A estrutura do meu DAO está sobre o JPA 2 e todas as suas queries eu estou fazendo direto usando JPA-QL para não utilizar nem a CriteriaBuilder do JPA 2 nem a Session/Criteria do Hibernate justamente para garantir um desacoplamento do mecanismo de persistência. Bom, o problema estava justamente na forma de montar essa minha JPA-QL, quanto executo uma query como esta por exemplo:

O que eu estou retornando para esse query era para ser uma Collection de objetos do tipo Funcao, só que está sendo retornado uma Collection de array de objetos  Collection<Object[]>. Logo na minha JSP ao iterar essa Collection é disparada uma exception justamente por não existir uma propriedade “f.nome” por exemplo mas apenas “f[1]” por exemplo.

Mas tá, como eu resolvo isso?

Para o meu caso foi simples, simplesmente alterei algumas coisas no meu método de consulta. Primeiramente definindo o tipo do resultado da JPA-QL na consulta, passando um segundo parâmetro no método EntityManager.createQuery(query, type). Neste ponto você tem que tomar cuidado, caso você defina um tipo específico para a sua consulta você não pode misturar os objetos, no meu caso eu tive que selecionar apenas 1 objeto, o objeto do tipo, ficando assim:

Neste meu caso resolveu o problema logo porque eu já tenho o objeto “organizacao” dentro da classe Funcao.

Solução final

No fim das contas o meu método de consulta ficou assim pessoal:

Referências

http://docs.jboss.org/hibernate/orm/4.0/hem/en-US/html/querycriteria.html

http://www.objectdb.com/java/jpa/query/jpql/select

http://docs.oracle.com/javaee/5/tutorial/doc/bnbtl.html#bnbtm

Blog Java