Gente o meu ta retornando sempre todos os dados
package br.com.alura.spring.data.specification;
import java.math.BigDecimal; import java.time.LocalDate;
import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root;
import org.springframework.data.jpa.domain.Specification;
import br.com.alura.spring.data.orm.Funcionario;
public class SpecificationFuncionario {
public static Specification<Funcionario>nome(String nome){
return(root,criteriaQuery, criteriaBuilder) ->
criteriaBuilder.like(root.get("nome"),"%" + nome + "%");
}
public static Specification<Funcionario>cpf(String cpf){
return(root,criteriaQuery, criteriaBuilder) ->
criteriaBuilder.equal(root.get("cpf"), cpf);
}
public static Specification<Funcionario>salario(BigDecimal salario){
return(root,criteriaQuery, criteriaBuilder) ->
criteriaBuilder.greaterThan(root.get("salario"), salario);
}
public static Specification<Funcionario>dataContratacao(LocalDate dataContratacao){
return(root,criteriaQuery, criteriaBuilder) ->
criteriaBuilder.greaterThan(root.get("dataContratacao"), dataContratacao);
}
}
public void inicial(Scanner scanner) { System.out.println("Digite um nome"); String nome = scanner.next();
if(nome.equalsIgnoreCase("NULL")) {
nome = null;
}
System.out.println("Digite um cpf");
String cpf = scanner.next();
if(cpf.equalsIgnoreCase("NULL")) {
cpf = null;
}
System.out.println("Digite um salario");
String salario = scanner.next();
BigDecimal salarioFinal = new BigDecimal(salario);
if(salarioFinal.equals("0")) {
salarioFinal = null;
}
System.out.println("Digite a Data de Contratacao");
String data = scanner.next();
LocalDate dataContratacao;
if(data.equals("NULL")) {
dataContratacao = null;
}else {
dataContratacao = LocalDate.parse(data, formmatter);
}
List<Funcionario> funcionarios = funcionarioRepository.findAll(Specification.where(SpecificationFuncionario.nome(nome))
.or(SpecificationFuncionario.cpf(cpf))
.or(SpecificationFuncionario.salario(salarioFinal))
.or(SpecificationFuncionario.dataContratacao(dataContratacao))
);
funcionarios.forEach(System.out::println);
}
}