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 ?)