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.??
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.
vc está com problemas na busca do vraptor ou do hibernate?
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…
[code]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();
}
}
[/code]
[code]
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();
}
}[/code]
<form action="<c:url value="/contatos/busca"/>"><input id="busca" name="nome" /></form>
<script type="text/javascript">
$("#busca").puts("Busca produtos por nome");
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…