Java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.String"

2 respostas
S

Boa tarde pessoal.

Eu tenho em minha ManagedBean uma instância de uma lista de nome e emails de Pessoas, as quais irei utililizar essas informações para mandar email’s automaticamete.

private List<Pessoa> listaEmails = new ArrayList<Pessoa>();.

Estou fazendo um consulta no banco que está funcionando normalmente.

Query query = entityManager
				.createNativeQuery("SELECT PES.nome, PES.email " +
									"FROM pessoa PES " +
									"JOIN usuario USU ON (PES.id = USU.pessoa_id) " +
									"JOIN dsi DSI ON (USU.id = DSI.usuario_id) " +
									"JOIN dsi_assunto DSIA ON (DSI.id = DSIA.dsi_id) " +
									"JOIN assunto ASS ON (DSIA.assuntos_id = ASS.id) " +
									"WHERE ASS.nome = ?1");
		query.setParameter(1, assunto.getNome());
		listaEmails = query.getResultList();

O problema é quando chega no meu for each, pois é a hora que ele irá interar na lista e mandar os emails para os usuários.

O erro que dá no log do meu server é o seguinte.

16:26:26,833 ERROR [application] java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.Pessoa
javax.faces.el.EvaluationException: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.Pessoa

Alguém pode me ajudar a converter um Object já que é o resultado da consulta efetuado na Query em um objeto da classe Pessoa

Já implementei equals() e hashCode() na classe Pessoa e nada adiantou. Fico no aguardo de um feedback de vcs. Obrigado

2 Respostas

thiago.correa

Você já depurou o código para saber que tipo de objeto é?! Não me lembro bem a ocasião, se foi com native query ou com hql mas, quando selecionei 2 campos, ele me retornou uma Matriz ao invés de um list ou um objeto do HQL, dá uma olhada!

S

Debuguei sim. O resultado é uma matriz mesmo

Criado 26 de abril de 2010
Ultima resposta 26 de abr. de 2010
Respostas 2
Participantes 2