Pesquisar Genérico

0 respostas
donny

Salve galera! Preciso de um help! Tenho uma tela com um formulário para cadastro de cliente. Esse mesmo fomulário tbm serve para pesquisar, usando alguns dos campos, o usuário que escolhe no momento, dependendo do que ele quer pesquisar, para fazer a consulta.

Para efetuar essa pesquisa no banco tenho esse método abaixo para receber o objeto, com qualquer atributo preenchido, dependendo do campo que o usuário informou no formulário da tela.

A vantagem desse método genérico, é que posso usar para qualquer tela.

Porém não está retorno nada. Por exemplo: O usuário acessa a tela de Cadastro de Clientes, informa apenas o primeiro nome do cliente no campo “nome” e clica em pesquisar. Deveria trazer todos os clientes que possuem esse nome informado, porém não retorno nada. Se eu informar o telefone ao invés do nome, tbm não retorno nada, mesmo que exista no banco.

public List<T> pesquisar(final T example){
		final Criteria criteria = session.createCriteria(clazz);
		criteria.add(Example.create(example).enableLike(MatchMode.ANYWHERE).ignoreCase());
        return criteria.list();
	}

Segue abaixo o SQL gerado pelo hibernate. Nesse caso estou informando apenas o primeiro nome do cliente:

select this_.id as id8_1_, this_.empresa_id as empresa2_8_1_, this_.celular as celular8_1_, this_.cpf as cpf8_1_, this_.dt_nascimento as dt5_8_1_, this_.email as email8_1_, this_.localizacao_id as localiz10_8_1_, this_.nome as nome8_1_, this_.observacoes as observac8_8_1_, this_.telefone as telefone8_1_, localizaca2_.id as id6_0_, localizaca2_.empresa_id as empresa2_6_0_, localizaca2_.bairro as bairro6_0_, localizaca2_.cep as cep6_0_, localizaca2_.cidade as cidade6_0_, localizaca2_.complemento as compleme6_6_0_, localizaca2_.endereco as endereco6_0_, localizaca2_.estado as estado6_0_, localizaca2_.numero as numero6_0_ 
from cliente this_ left outer join localizacao localizaca2_ on this_.localizacao_id=localizaca2_.id 
where (this_.empresa_id=? 
and lower(this_.celular) like ? 
and lower(this_.cpf) like ? 
and lower(this_.email) like ? 
and lower(this_.nome) like ? 
and lower(this_.observacoes) like ? 
and lower(this_.telefone) like ?)
Criado 24 de agosto de 2011
Respostas 0
Participantes 1