Olá Pessoal,
Tenho uma tela onde tenho um botão pesquisar.
Quando clico no botão, abre outra tela. OK
Dentro dela tenho a minha pesquisa até achar a informação que eu preciso(o ID). OK
Estou com problema para ‘voltar’ para a tela anterior com o ID para poder fazer o select(via JPA) e fazer as modificações que eu preciso.
Ok, aos códigos:
No meu botão Confirmar da tela de Pesquisa eu tentei de 2 formas:
-
Usando um executeQuery:
private void retorna_busca(){ if (!frmPesqIbge.getLbIdPesq().getText().equals("")){ IbgeActionListener ibgeActionListener = new IbgeActionListener(); ibgeActionListener.recebeRetornoPesq(Long.parseLong(frmPesqIbge.getLbIdPesq().getText())); frmPesqIbge.dispose(); }else{ JOptionPane.showMessageDialog(frmPesqIbge, “Não achou o ID”); }
}
A chamada recebeRetornoPesq está assim:
public void recebeRetornoPesq(Long numId) {
IbgeDAO dao = new IbgeDAO();
List<Ibge> lista = null;
String query = "Select i from Ibge i where i.id = ?1";
lista = (List<Ibge>) dao.executeQuery(query, numId);
doBancoParaForm((Ibge) lista);
}
E o meu executeQuery está básico:
public Object executeQuery(String query, Object... params) {
Query createdQuery = this.entityManager.createQuery(query);
for (int i = 0; i < params.length; i++) {
createdQuery.setParameter(i+1, params[i]);
}
return createdQuery.getResultList();
}
-
Usando um NamedQuery:
public List listaIbgePorId(Long numId) { return (List) getEntityManager().createNamedQuery(“ibge.porId”) .setParameter(1, numId) .getSingleResult();
}@NamedQuery(name = “ibge.porId”, query = “Select i from Ibge i where i.id = ?1”)
public void recebeRetornoPesq(Long numId) { IbgeDAO dao = new IbgeDAO(); List lista = null; String query = “Select i from Ibge i where <a href="http://i.id">i.id</a> = ?1”; lista = (List) dao.listaIbgePorId(numId); doBancoParaForm((Ibge) lista); }
Ambos eu estou tendo este retorno:
Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: java.util.ArrayList cannot be cast to br.sysurna.model.Ibge
Onde eu estou errando, conseguem ajudar?
