Use Criteria para fazer essa pesquisa, se vc quiser uma pesquisa restringindo pelo código e comparando o parametro enviado com as suas colunas em qualquer lugar da String, ficaria assim:
public List<Ponteira> busca(Ponteira ponteira) {
Criteria crit = session.createCriteria(Ponteira.class);
Restrictions.eq("codigo", ponteira.getCodigo());
Restrictions.ilike("nome", ponteira.getNome(), MatchMode.ANYWHERE);
Restrictions.ilike("descricao", ponteira.getDescricao, MatchMode.ANYWHERE);
Restrictions.ilike("marca", ponteira.getMarca, MatchMode.ANYWHERE);
Restrictions.ilike("modelo", ponteira.getModelo, MatchMode.ANYWHERE);
Conjunction conjunction = Restrictions.conjunction();
crit.add(conjunction);
List results = crit.list();
return results;
}
Essa pesquisa é “que seja tal código, que o nome esteja em qualquer lugar da String e qualquer lugar da descrição e qualquer lugar para a marca e qualquer lugar para modelo”. Mas se vc quiser usar “ou”, use disjunction no lugar do conjunction, ai será “que seja tal código, que o nome esteja em qualquer lugar da String ou qualquer lugar da descrição ou qualquer lugar para a marca ou qualquer lugar para modelo”.
Se não quiser passar os parâmetros usando os atributos do objeto, mas uma String apenas, ficaria assim:
public List<Ponteira> busca(Long codigo, String parametro) {
Criteria crit = session.createCriteria(Ponteira.class);
Restrictions.eq("codigo", codigo);
Restrictions.ilike("nome", parametro, MatchMode.ANYWHERE);
Restrictions.ilike("descricao", parametro, MatchMode.ANYWHERE);
Restrictions.ilike("marca", parametro, MatchMode.ANYWHERE);
Restrictions.ilike("modelo", parametro, MatchMode.ANYWHERE);
Conjunction conjunction = Restrictions.conjunction();
crit.add(conjunction);
List results = crit.list();
return results;
}
Além do ANYWHERE vc possui o EXACT, END e START, ou seja, o parâmetro enviado em qualquer lugar da String, exatamente igual, no final e no começo.
[]s