Olá Pessoal, boa noite. Já dei uma lida nos tópicos parecido com esse mas não achei uma solução ainda. Tenho um DAO generico, e gostaria de saber como fazer o metodo que lista todos os objetos de uma tabela:
[code]public List buscaObjeto(Object objeto){
List listaObjetos = null;
[code] Servico objServico = new Servico();
ServicoDAO objServicoDAO = new ServicoDAO();
List <bean.Servico> listaServicos;
listaServicos = (List) (Servico) objServicoDAO.buscaObjeto(objServico);
for(int i = 0; i < listaServicos.size(); i ++){
System.out.println("Nome do Servico: " + listaServicos.get(i).getNomeServico() +
"\nValor do Servico: " + listaServicos.get(i).getPrecoServico()+
"\nId do Servico: " + listaServicos.get(i).getIdServico() );
}
[/code]
Porém tenho o seguinte erro:
Exception in thread "main" org.hibernate.hql.ast.QuerySyntaxException: unexpected token: class near line 1, column 6 [FROM class bean.Servico objeto ]
OI! Obrigada pela reposta. Não sabia que dava pra fazer isso.
Mas agora estou com o seguinte erro:
Exception in thread "main" java.lang.ClassCastException: java.util.ArrayList cannot be cast to bean.Servico
at apolo.Main.main(Main.java:45)
Java Result: 1
[quote=LarissaNepomuceno]OI! Obrigada pela reposta. Não sabia que dava pra fazer isso.
Mas agora estou com o seguinte erro:
Exception in thread "main" java.lang.ClassCastException: java.util.ArrayList cannot be cast to bean.Servico
at apolo.Main.main(Main.java:45)
Java Result: 1
Ola, tambem enfrentei este problema ao utilizar essa funcao… A maneira como voce esta tentando fazer o cast nao funciona.
Quando eu recebo a lista devolvida pelo metodo da DAO eu faco o cast da seguinte maneira…
public static <T> List<T> castList(Class<? extends T> clazz, Collection<?> c) {
List<T> r = new ArrayList<T>(c.size());
for (Object o : c)
r.add(clazz.cast(o));
return r;
}
Depois no seu caso acho que a chamada ficaria da seguinte maneira…
Olá amostech. Funcionou cara! Muito bom mesmo, mas eu não entendi direito como o castList funciona. Isso servirá para qualquer objeto em que eu requiera uma lista?
Fiquei empolgada agora. Muito bom mesmo!
Então, denisbenjamim, seguinte é um objeto Servico, mas tipo, ele não precisa saber disso, basta retorna a lista de objetos que eu enviar…
Priuli vou dar uma lida na solução
Valew pessoal.
[quote=LarissaNepomuceno]Olá amostech. Funcionou cara! Muito bom mesmo, mas eu não entendi direito como o castList funciona. Isso servirá para qualquer objeto em que eu requiera uma lista?
Fiquei empolgada agora. Muito bom mesmo!
Então, denisbenjamim, seguinte é um objeto Servico, mas tipo, ele não precisa saber disso, basta retorna a lista de objetos que eu enviar…
Priuli vou dar uma lida na solução
Valew pessoal.
[/quote]
Perguntei o tipo, por que no caso do DAO que uso, eu passei a ele uma Classe a qual ele deveria consultar, mas mesmo assim, ele sempre me devolve um List ou seja, devolve Dados do tipo Object, eu simplesmente quando repasso, para a aplicação em outro list, ou arraylist, ou eu especifico nesse novo list, o tipo utilizando <?> ou, quando for passar para a classe responsavel uso um Cast simples, do tipo minha_classe novaclasse = (novaclasse) MeuList.get(idx); .
Entao, o castList funciona assim ele cria uma nova lista auxiliar capaz de receber elementos do tipo do seu objeto, no caso Servico, dai ele vai adicionando a esta nova lista os elementos da lista que voce passou como parametro para a lista auxiliar fazendo o cast individual. Depois ele retorna a lista auxiliar…
Acredito que a solucao do priuli seja mais elegante sim. E inclusive quero dar uma olhada, porem agora estou com o prazo meio apertado para concluir o sistema e nao posso parar para resolver isso. Mas com certeza vou dar uma olhada!
[quote=amostech]Entao, o castList funciona assim ele cria uma nova lista auxiliar capaz de receber elementos do tipo do seu objeto, no caso Servico, dai ele vai adicionando a esta nova lista os elementos da lista que voce passou como parametro para a lista auxiliar fazendo o cast individual. Depois ele retorna a lista auxiliar…
Acredito que a solucao do priuli seja mais elegante sim. E inclusive quero dar uma olhada, porem agora estou com o prazo meio apertado para concluir o sistema e nao posso parar para resolver isso. Mas com certeza vou dar uma olhada!
um abraco.[/quote]
Bom dia Galera, do guj… bom concordo que ficar fazendo o cast um por um é meio desnecessario, so passar as especificações da classe ao list<?> , ai nao será necessario fazer o cast da forma que eu havia citado , abraço galera.