Olá pessoal,
Substitui minha Named Query para testar o uso do Like, funcionou para a primeira consulta, mas quando tento consultar novamente o seguinte erro aparece.
Indique o nome do funcionário:
Fulano
%Fulano%
Funcionario [id=2, nome=Fulano de Tal, cpf=154.265.225-58, salario=4500.00, dataContatacao=2022-05-04, cargo=Gerente de Projeto, unidades={[3, Sede de PD NE - Rua ABC n500 Bloco B][2, Sede Diretoria NE - Rua XPTO n 1500 Bloco A]}
Funcionario [id=3, nome=Fulano de Tal Jr, cpf=154.148.895-88, salario=5500.00, dataContatacao=2022-05-09, cargo=Desenvolvedor, unidades={[1, Sede Provisoria NE - Rua ABC n500 Bloco A][2, Sede Diretoria NE - Rua XPTO n 1500 Bloco A]}
Qual a ação que você quer executar em funcionario:
0 - Sair
1 - Busca funcionario nome
2 - Busca funcionario cpf
1
Indique o nome do funcionário:
Luciano
%Luciano%
2022-05-09 02:00:04.049 INFO 13688 --- [ main] ConditionEvaluationReportLoggingListener :
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-05-09 02:00:04.067 ERROR 13688 --- [ main] o.s.boot.SpringApplication : Application run failed
java.lang.IllegalStateException: Failed to execute CommandLineRunner
Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [\] did not match expected type [java.lang.String (n/a)]; nested exception is java.lang.IllegalArgumentException: Parameter value [\] did not match expected type [java.lang.String (n/a)]
Caused by: java.lang.IllegalArgumentException: Parameter value [\] did not match expected type [java.lang.String (n/a)]
Tive que diminuir o erro acima por conta da quantidade de palavras.
Percebe-se no começo que no começo faço a uma pesquisa inserindo Fulano, imprimindo antes o que eu coloquei no método para então ele retornar, até ai funciona, quando tento novamente ele dá o erro.
Meu código no repository
import java.util.List;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import com.luciano.spring.data.model.Funcionario;
@Repository
public interface FuncionarioRepository extends CrudRepository<Funcionario, Integer>{
List<Funcionario> findByNomeLike(String nome);
List<Funcionario> findByCpf(String cpf);
}
Meu código no RelatorioService onde uso o método findByNomeLike(String nome)
private void buscaFuncionarioNome(Scanner scanner) {
System.out.println("Indique o nome do funcionário: ");
scanner.nextLine();
String nome = scanner.nextLine();
nome = "%"+nome+"%";
System.out.println(nome);
List<Funcionario> list = repository.findByNomeLike(nome);
list.forEach(System.out::println);
}