Buscador com Vraptor

4 respostas
Lucas_Sorrentino

Pessoal, to com um problema…
estou a horas tentando montar um mecanismo de busca de uma tabela em um banco de dados utilizando o Vraptor, mas não estou conseguindo. O máximo que eu consigo é que ele busque por apenas um dos campos, o que não resolçve meu problema, ja que eu gostaria que a busca fosse feita em todos os campos. Será que alguém poderia me ajudar.??

4 Respostas

thiagotn

Sim…a galera pode ajudar. Qual a dificuldade no código? O que você tentou fazer e não conseguiu? Cole o código pra facilitar.

Lucas_Cavalcanti

vc está com problemas na busca do vraptor ou do hibernate?

Lucas_Sorrentino

Bem, o porblmea é o seguinte... consigo fazer um código pra procurar por um parametro apenas, como por exemplo "nome". Gostaria de poder fazer a busca por vários parametros da minha tabela, como por exemplo o telefone, o cargo, celular, entre outros.. aí vai o código...

package br.com.metha.buscaControleCorrespondencia.DAO;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;

import br.com.caelum.vraptor.ioc.Component;
import br.com.metha.buscaControleCorrespondencia.modelo.Contato;

@Component
public class ContatoDAO {

private final Session session;
	
	public ContatoDAO(Session session){
		this.session = session;
	}
	public Contato procura(Integer id) {
		Contato contato =(Contato)session.load(Contato.class, 1L);
		return contato;
	}
	@SuppressWarnings("unchecked")
	public List<Contato> listaTudo(){
		return this.session.createCriteria(Contato.class).list();
	}
	@SuppressWarnings("unchecked")
	public List<Contato> busca(String nome) {
		
		return session.createCriteria(Contato.class).add(Restrictions.ilike("nome", nome, MatchMode.ANYWHERE)).list();
	}
}
package br.com.metha.buscaControleCorrespondencia.controller;

import static br.com.caelum.vraptor.view.Results.json;

import java.util.List;

import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.metha.buscaControleCorrespondencia.DAO.ContatoDAO;
import br.com.metha.buscaControleCorrespondencia.modelo.Contato;

@Resource
public class ContatosController {

	private final ContatoDAO dao;
	private final Result result;

	public ContatosController(ContatoDAO dao, Result result) {
		this.dao = dao;
		this.result = result;
	}

	public List<Contato> lista() {

		return dao.listaTudo();
	}
	public List<Contato> busca(String nome){
		result.include("nome", nome);
		return dao.busca(nome);
	}
	@Get 
	public void buscaJson(String q){
		result.use(json()).from(dao.busca(q)).serialize();
	}
}
<form action="<c:url value="/contatos/busca"/>"><input id="busca" name="nome" /></form>
<script type="text/javascript">
	$("#busca").puts("Busca produtos por nome");
Lucas_Cavalcanti

vc quer digitar uma coisa só e ele buscar em vários campos?
vc pode mudar sua busca pra:

public List<Contato> busca(String nome) {  
           
         return session.createCriteria(Contato.class).add(
          Restrictions.or(
    Restrictions.ilike("nome", nome, MatchMode.ANYWHERE),
    Restrictions.ilike("descricao", nome, MatchMode.ANYWHERE)
)).list();  
     }

ou algo parecido com isso…

pesquise sobre Restrictions.disjunction também…

Criado 23 de março de 2010
Ultima resposta 23 de mar. de 2010
Respostas 4
Participantes 3