Olá pessoal;
Estou com uma tremenda duvida. Tenho um método que busca uma lista de nomes no banco. Agora, preciso
jogar esses nomes em um TextArea. O problema é que não estou acertano. Só consigo trazer o ultimo nome.
Alguém pode me ajudar? Só quero trazer uma lista.
Esse é o método que retorna a lista:
[code]public List<Funcionario>buscaPeloNomeListaFuncionarioHQL(String nome){
String hql = "from Funcionario f where f.nome like:busca";
Query query = this.s.createQuery(hql);
query.setParameter("busca","%" + nome + "%");
return query.list();
}[/code]
Esse é o código que deveria trazer os nomes do banco para o TextArea. Estou usando Hibernate.
[code]buttonConsulta.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
Session s = HibernateUtil.getSession();
FuncionarioDao dao = new FuncionarioDao(s);
///Aqui ele me pede uma String, mas eu quero todos os nomes///
List<String> listaDeNomes = dao.buscaNomeDeFuncionarios("");
for (String nome : listaDeNomes) {
textAreaRecebeConsulta.setText(nome);
}
}[/code]
});
Espero que alguem possa me ajudar.
Valeu.
Cara… não sei se entendi bem, mas o seu DAO está pegando a lista que o buscaPeloNomeListaFuncionarioHQL, montando (ou reformulando) a lista de nomes de funcionários e retornando uma lista também, correto?
A buscaNomeDeFuncionarios passando um parametro (vazio) deveria retornar a lista que o buscaPeloNomeListaFuncionarioHQL retorna…
Se me equivoquei, desconsidere…
Espero ter ajudado.
Amigo não sei se entendi sua questão, porém quando vc faz …
for (String nome : listaDeNomes) {
textAreaRecebeConsulta.setText(nome);
}
acho que você deveria fazer esse foreach passando todos os nomes, para uma String só, e então só depois setar a String no textArea
[quote=marciogm]Amigo não sei se entendi sua questão, porém quando vc faz …
for (String nome : listaDeNomes) {
textAreaRecebeConsulta.setText(nome);
}
acho que você deveria fazer esse foreach passando todos os nomes, para uma String só, e então só depois setar a String no textArea
[/quote]
marciogm está certo.
Você deve concatenar a string primeiro para depois adicionar na textArea.
Se sua textArea for uma JTextArea você pode usar o método append.
for (String nome : listaDeNomes) {
textAreaRecebeConsulta.append(nome);
}
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/JTextArea.html#append(java.lang.String)
Mudei a estratégia…fiz dessa forma e “quase” deu certo. O problema é que ele só retorna os nomes que são iguais.
No caso só “Arthur”.
Ficou assim:
public List<Funcionario> buscaPeloNome(String nome) {
Criteria c = this.s.createCriteria(Funcionario.class);
c.add(Restrictions.ilike("nome",nome, MatchMode.ANYWHERE));
c.addOrder(Order.asc("nome"));
c.setMaxResults(10);
return c.list();
}
E no evento aonde chamo os nomes para o TextArea ficou assim:
[code] buttonConsulta.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
String conteudo = consulta();
textAreaRecebeConsulta.setText(conteudo);
}
});
////Método Consuta///
private String consulta() {
Session s = HibernateUtil.getSession();
FuncionarioDao dao = new FuncionarioDao(s);
/////Nesse momento ele exige que eu coloque algum nome///
List<Funcionario> lista = dao.buscaPeloNome("Arthur");
StringBuffer sb = new StringBuffer();
for (Funcionario f: lista) {
sb.append(f.getNome() + "\r\n");
}
return sb.toString();
}[/code]
Quase deu certo…mas preciso de todos os nomes.
Valeu pelo apoio gente.
Consegui…encontrei o erro.
Valeu gente.