1
resposta

Duvida método remove(Object)

Pessoal,

Eu inclui no método editar funcionário a opção de incluir ou excluir unidades de negócios, mas aconteceram 2 problemas:

1- a opção remove(Object) não funciona - quando uso remove(Index) funciona e exclui do banco 2- Essa opção de remove é a única que não sai do método, fica em looping pedindo a info do scan

vejam o código abaixo - todas as outras opções funcionaram.

    private void atualizar(Scanner scanner) {
        boolean sistemaAtualizar = true;

        System.out.println("Qual o Id do Funcionário que você quer alterar?");
        int id = scanner.nextInt();

        Funcionario funcionario = funcionarioRepository.findById(id).get();

        System.out.println("Qual informação você quer alterar do Funcionário?");
        System.out.println("1 - nome");
        System.out.println("2 - cpf");
        System.out.println("3 - salario");
        System.out.println("4 - cargo");
        System.out.println("5 - adicionar unidade de trabalho");
        System.out.println("6 - remover unidade de trabalho");

        int action = scanner.nextInt();

        while (sistemaAtualizar) {

            if (action == 1) {
                System.out.println("Qual o nome do funcionário");
                String name = scanner.next();
                funcionario.setName(name);
                funcionarioRepository.save(funcionario);
            }
            if (action == 2) {
                System.out.println("Qual o CPF do funcionário");
                String cpf = scanner.next();
                funcionario.setCpf(cpf);
                funcionarioRepository.save(funcionario);
            }
            if (action == 3) {
                System.out.println("Qual o salário do funcionário");
                double salario = scanner.nextDouble();
                funcionario.setSalario(salario);
                funcionarioRepository.save(funcionario);
            }
            if (action == 4) {
                System.out.println("Qual o Id do cargo do funcionário");
                Integer cargoId = scanner.nextInt();
                Optional<Cargo> cargo = cargoRepository.findById(cargoId);
                funcionario.setCargo(cargo.get());
                funcionarioRepository.save(funcionario);
            }
            if (action == 5) {
                List<Unidade> unidades = funcionario.getUnidades();

                System.out.println("Qual o ID da unidade você quer acrescentar?");
                Integer unidadeIdAdd = scanner.nextInt();
                Unidade unidadeAdd = unidadeRepository.findById(unidadeIdAdd).get();
                unidades.add(unidadeAdd);
                funcionario.setUnidades(unidades);
                funcionarioRepository.save(funcionario);
            }
            if (action == 6) {
                List<Unidade> unidades = funcionario.getUnidades();
                System.out.println("Qual o ID da unidade você quer remover?");
                Integer unidadeIdRemove = scanner.nextInt();
                Unidade unidadeRemove = unidadeRepository.findById(unidadeIdRemove).get();
                unidades.remove(unidadeRemove);
                funcionario.setUnidades(unidades);
                funcionarioRepository.save(funcionario);    
            }

            else {
                sistemaAtualizar = false;
            }

        }

    }
1 resposta

Boa noite Ana, tudo bem ?

Você quer postar o código das suas classes para eu tentar te ajudar a descobrir por que está em Loop o seu código ?

Fico à disposição,

Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software