Erro de Casting [Resolvido]

Olá,

Estou recebendo um erro de Casting abaixo:

Caused by: java.lang.ClassCastException: model.Menu cannot be cast to model.Menu
        at dao.MenuDAO.listaTodos(MenuDAO.java:60)

Se perceberem no erro acima ele acusa um erro de casting do mesmo tipo, de model.Menu para model.Menu.

Código da Linha 60:

58. Query query = entityManager.createNamedQuery("Menu.findAll");
59. List<Menu> menus = query.getResultList();
60. for (Menu menu : menus){
61.            System.out.println("-=> " + menu.getDescricao());
62. }

Está acusando o erro no for (Menu menu : menus).

Alguém saberia me dizer onde está o erro?

Grato!

se não me engano o método getResultList() retorna uma lista de Object

você precisa fazer o cast para a classe Menu, antes de tratá-lo como tal

List<Object> menus = query.getResultList();
for(Object menu : menus){
   Menu menuCast = (Menu)menu;
   //resto do código
}

Oi!

Bem estranho.
Altere sua lista para uma lista de Objetos e imprima o nome da classe.

objeto.getClass();

Assim, saberá que tipo de objeto exatamente sua Query está retornando!
Abraços.

Olá,

faça a seguinte alteração no seu código:

 List<Menu> menus = (ArrayList<Menu>) query.getResultList();

Adicione o casting no retorno da sua query.

Abs!

Olá,

Fiz os testes recomendados mas todos geraram erros.

List<Menu> menus = (ArrayList<Menu>) query.getResultList();  

Quando executei este o erro mudou para Caused by: java.lang.ClassCastException: java.util.Vector cannot be cast to java.util.ArrayList, nesta mesma linha.

Então testei:

List<Menu> menus = (List<Menu>)query.getResultList();

O erro voltou a ser exatamente o mesmo.

Quando executo:

 objeto.getClass(); 

Ele mostra que retorna uma lista de model.Menu

E quando executo:

O erro java.lang.ClassCastException: model.Menu cannot be cast to model.Menu vai para linha:

Menu menuCast = (Menu)menu;

Esqueci de comentar que estou utilizando o Netbeans 6.9.1 e Glassfish 3.0.1.

Se alguém tiver mais alguma sugestão agradeço.

Está bem estranho, usei JPA e não passei por uma situação como essa.
Veja se não há lixo de .class em seu projeto, algo que possa estar referenciando classes antigas e etc.

Poste a classe completa, que contém esse método.
Abraços!

Consegui resolver, a cada nova execução preciso limpar o servidor e realizar um reload no mesmo, que então funciona.

Não sei informar o motivo, mas depois da primeira execução, quando executo novamente ocorre o erro de Casting.

Obrigado a todos pela ajuda.

[quote=gustavod]
Consegui resolver, a cada nova execução preciso limpar o servidor e realizar um reload no mesmo, que então funciona.

Não sei informar o motivo, mas depois da primeira execução, quando executo novamente ocorre o erro de Casting.

Obrigado a todos pela ajuda.[/quote]

Hum! Possivelmente estava com referências antigas, mas enfim né.
Se resolveu, adicione [Resolvido] ao fim do seu Titulo ok?

Abraços colega!

[quote=gustavod]
Consegui resolver, a cada nova execução preciso limpar o servidor e realizar um reload no mesmo, que então funciona.

Não sei informar o motivo, mas depois da primeira execução, quando executo novamente ocorre o erro de Casting.

Obrigado a todos pela ajuda.[/quote]

Bem bizarro isso hein

Como está essa named query ‘Menu.findAll’?

Na named query ‘Menu.findAll’ está:

T+