Joguei no google apereceu de cara o Forum da Alura, algum aluno dizendo que era no método save mesmo, do "CrudRepository" .
A solução que fiz, pega o id e seta a nova descricao, nesse registro identificado pelo Id. Antes de solicitar o Id a aplicação lista todos os registros do banco para que o usuário saiba (com o banco tendo poucos registros, ok). Funcionou.
Na Classe CrudCargoService adicionei esses metodos.
public void listar() {
Iterable lista = cargoRepository.findAll();
for (Iterator iterator = lista.iterator(); iterator.hasNext();) {
Cargo cargo = (Cargo) iterator.next();
System.err.println(cargo.getId() + " - " + cargo.getDescricao());
}
}
public void atualizar(Scanner scanner) {
this.listar();
System.out.println("Informe o Id do Cargo relacionado, para atualizar");
int id = scanner.nextInt();
System.out.println("Informe a nova descricao do Cargo");
String descricao = scanner.next();
Cargo cargo = new Cargo();
cargo.setId(id);
cargo.setDescricao(descricao.toUpperCase());
cargoRepository.save(cargo);
System.out.println("Atualizado");
}
Na Classe SpringDataApplication, fiz alterações no metodo run() adicionado a opção para atualizar o registro.
while (system) {
System.out.println("Qual a acao vc qr executar?");
System.out.println("0 - Sair");
System.out.println("1 - Cargo");
System.out.println("2 - Atualizar um cargo existente");
int action = scanner.nextInt();
if (action == 1) {
cargoService.inicial(scanner);
} if (action == 2) {
cargoService.atualizar(scanner);
} if (action <= 0 || action > 2){
system = false;
}
}