Retornar uma lista de nomes

5 respostas
arthurgon

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:

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();
		
	}

Esse é o código que deveria trazer os nomes do banco para o TextArea. Estou usando Hibernate.

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);
				}

			}
});

Espero que alguem possa me ajudar.
Valeu.

5 Respostas

rafaeldiego

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.

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

S

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

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)

arthurgon

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:

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();
	}

Quase deu certo...mas preciso de todos os nomes.
Valeu pelo apoio gente.

arthurgon

Consegui…encontrei o erro.
Valeu gente.

Criado 14 de agosto de 2008
Ultima resposta 14 de ago. de 2008
Respostas 5
Participantes 4