Criei uma classeDAO com a query contendo as informações que desejo buscar no BD e exibir na tela, da seguinte forma:
public List<Colaborador> recuperaColaborador(){
Session sess = PlcHibernateManagerLocator.getInstance().getHibernateManagerClasse("default").getSession();
return sess.createQuery(" select obj.id, obj.nome from ColaboradorEntity obj")
.list();
}
Na minha classe Action eu preciso chamar a função List recuperaColaborador() e listar os resultados, mas não sei fazer isso.
basicamente, vc deve criar uma instancia da sua classe DAO e depois acessar o método que vc quer.
MinhaClasseDAO dao = new MinhaClasseDAO();
List<Colaborador> listaColaboradores = dao.recuperaColaborador();
depois de recuperar a lista de colaboradores, vc faz um loop para exibir o resultado.
dica: estude o padrão de projeto MVC
E
engfelipeoliveira
Eu até já tinha instanciado, usando facade.
A minha dúvida é justamente no loop.
Com qual função eu passo o nome do campo que eu quero recuperar a informação.
O meu código da classe Action está assim:
IAppFacade facadeImpl = (IAppFacade)this.getServiceFacade(IAppFacade.class);
List listaColaborador = facadeImpl.recuperaColaborador();
Como eu faço o laço FOR?
Como eu faço de 0 até último registro?
Pode exemplificar por favor.
Obrigado pela atenção.
finotti
existem várias formas de se fazer loop em java.
vou tentar exemplificar com a mais clara que eu acho, utilizando um Iterator.
supondo que sua listaColaboradores é formada por objetos ‘Colaborador’
for(Iterator it = listaColaboradores.iterator(); it.hasNext();) {
// a cada volta do loop é carregado um objeto 'Colaborador'
Colaborador colaborador = (Colaborador)it.next();
String nomeDoColaborador = colaborador.getNome();
System.out.println("Nome do colaborador=" + nomeDoColaborador);
}
Stringmensagem="Registros: <br>";ColaboradorDAOdao=newColaboradorDAO();List<Colaborador>listaColaborador=dao.recuperaColaborador();for(Iteratorit=listaColaborador.iterator();it.hasNext();){// a cada volta do loop é carregado um objeto 'Colaborador' Colaboradorcolaborador=(Colaborador)it.next();StringnomeDoColaborador=colaborador.getNome();mensagem=mensagem+nomeDoColaborador+"<br>";}
dá esse erro:
ERROR [PlcExceptionHandlerService] Usuario corrente: admin Erro: Erro inesperado. Comunique ao Analista responsável. Mensagem do Sistema: [Ljava.lang.Object; 15:53:30,995 [http-8080-4]
java.lang.ClassCastException: [Ljava.lang.Object;
E
engfelipeoliveira
A minha Action ficou dessa maneira, mas está dando o seguinte erro "java.lang.ClassCastException: [Ljava.lang.Object" na linha "Colaborador colaborador = (Colaborador)it.next();"
publicclassColaboradorActionextendsAppAction{@OverrideprotectedbooleangravaSimplesAntes()throwsPlcException{try{IAppFacadefacadeImpl=(IAppFacade)this.getServiceFacade(IAppFacade.class);List<Colaborador>listaColaborador=facadeImpl.recuperaColaborador();Stringmensagem="Registros: <br>";for(Iteratorit=listaColaborador.iterator();it.hasNext();){Colaboradorcolaborador=(Colaborador)it.next();StringnomeDoColaborador=(String)colaborador.getNome();mensagem=mensagem+nomeDoColaborador;}PlcMailMessageemail=newPlcMailMessage();email.setFromAddress("[email removido]");email.setToAddress("[email removido]");email.setToCcAddress("[email removido]");email.setToBccAddress("[email removido]");email.setSubject("Assunto do email");email.setBody(mensagem);email.setMimeType(PlcMailMessage.CONTEUDO_HTML);PlcMailSender.getInstance().sendMail("mail.teste.com.br",email);}catch(Exceptione){helperMsgPlc.msgErro("Erro: "+e,newObject[]{},contextHelperPlc.getRequest());}returnsuper.gravaSimplesAntes();}}