Metodo Generico para pesquisa no Criteria/Hibernate

Pessoal,

Tentei criar um método genérico para uma pesquisa com vários parâmetros para não ficar criando um Criteria para cada combinação que o usuário escolha. Mas não deu muito certo.

public List<ServicoDiario> pesquisarServicoDiario(String setor, String cliente, String regime){
		Criteria crt = this.session.createCriteria(ServicoDiario.class);
	
		if(cliente.equals("Selecione")){
			cliente = "";
		}
		if(regime.equals("Selecione")){
			regime = "";
		}
		if(setor.equals("Selecione")){
			setor = "";
		}
		
		
		crt.add(Restrictions.like("setor", setor+"%"));
		crt.createAlias("cliente", "cliente");
		crt.add(Restrictions.like("cliente.nome", cliente+"%"));
		crt.add(Restrictions.like("regime", regime+"%"));

		
		
		return crt.list();
	}

Ou seja, não precisaria criar um Criteria para cada opção de busca que o usuário escolher, e sim um método só que englobe todas as opções de escolha do usuário.

Teria que ter uma forma de passar para o Criteria o seguinte: “Quando o campo vier em branco pegue qualquer coisa”. Estou usando para isso o “%”.

Alguém pode dar uma luz??

Abraço a todos…

Da uma olhada no “Query By Example” (QBE) e ve se te atende. Melhor que tentar construir sua própria API: