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
}
nel
Junho 7, 2011, 9:39am
#3
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.
newbcc
Junho 7, 2011, 9:40am
#4
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.
nel
Junho 7, 2011, 10:02am
#6
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.
nel
Junho 7, 2011, 10:32am
#8
[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+