Estou querendo fazer uma Criteria que traga alguns resultados, filtrando por Nome OU por CNPJ, porém não sei como fazer esse OU.
Meu código é o seguinte
Criteria c = this.session.createCriteria(Cliente.class);
c.add(Restrictions.ilike("nome", term + "%"));
c.add(Restrictions.ilike("cnpj", term + "%"));
c.addOrder(Order.asc("nome"));
Na verdade é bem fácil, você pode usar o Restrictions.or() que recebe os outros 2.
Exemplo:
Criteria c = this.session.createCriteria(Cliente.class);
c.add(Restrictions.or(Restrictions.ilike("nome", term + "%"), Restrictions.ilike("cnpj", term + "%"));
c.addOrder(Order.asc("nome"));
Edit: Outro ponto, eu notei que você está concatenando um “%” aí no meio para usar o like, mas o Criteria tem um jeito próprio de fazer isso também.
Caso queira que a String comece com o valor que você enviou, o que seria assim no SQL
recebo as variáveis como parametro, e jogo no restrictions, problema que percebi que estou usando errado para a busca que eu qro, pois nem sempre todas as variáveis vem com valor. então a busca acaba trazendo todo mundo. minha duvida é: tem como eu usar o criteria sem ter que jogar tudo isso dentro de varios if’s verificando qual variável esta vindo preenchida?