Basicamente eu estou fazendo um leitor de arquivos CSV para fazer um cadastro, ele faz uma busca no banco de dados verifica se o cadastro ja existe, se já ele apenas faz alterações nos dados e adiciona as disciplinas a mais - é um cadastro de professores - porem se os primeiros dois professores forem iguais (o que deveria gerar uma atualização de dados e adição das disciplinas ) ele simplesmente adiciona os dois como dois professores diferentes. Isso só acontece com os dois primeiros se o mesmo caso se repete na quarta e quinta posição por exemplo isso é tratado normalmente estou utilizando JSF.
//Tratamento de aruqivo para inclusão via CSV public void tratarArquivo() { int atividade; try { Scanner scanner = new Scanner(getFile().getInputstream(), “UTF-8”); while (scanner.hasNext()) { String linha = scanner.nextLine(); if (linha != null && !linha.trim().isEmpty()) { String[] dados = linha.split("[,]"); servidor = new Servidor(); atividade = Integer.parseInt(dados[2]); if (service.buscarDocente(dados[0], atividade) != null) { servidor = service.buscarDocente(dados[0], atividade); servidor.setNome(dados[1]); servidor.setAtividadeDesenvolve(atividade); servidor.setOrigem(origem); if (!dados[3].isEmpty()) { servidor.setEmail(dados[3]); } if (!dados[4].isEmpty()) { servidor.setTelefones(dados[4]); } if (!dados[5].isEmpty()) { servidor.setTitulacao(dados[5]); } if (!dados[6].isEmpty()) { servidor.setAreaConhecimento(dados[6]); } if (!dados[7].isEmpty()) { servidor.setLotacao(dados[7]); }disciplina = Disciplina.novaInstancia(); disciplina.setCampus(dados[8]); disciplina.setCurso(dados[9]); disciplina.setDisciplina(dados[10]); disciplina.setNumeroInscricao(servidor.getNumeroInscricao()); salvarDisciplina(); alterar(); } else { servidor.setCpf(dados[0]); servidor.setOrigem(origem); servidor.setNome(dados[1]); servidor.setAtividadeDesenvolve(atividade); servidor.setEmail(dados[3]); servidor.setTelefones(dados[4]); servidor.setTitulacao(dados[5]); servidor.setAreaConhecimento(dados[6]); servidor.setLotacao(dados[7]); servidor.setObservacao(""); servidor.setAnoSemestre(Util.getAnoSemestre()); service.cadastrar(servidor); String numeroInscricao = service.buscaNumeroInscricaoDocente(dados[0], atividade); disciplina = Disciplina.novaInstancia(); disciplina.setCampus(dados[8]); disciplina.setCurso(dados[9]); disciplina.setDisciplina(dados[10]); disciplina.setNumeroInscricao(numeroInscricao); salvarDisciplina(); } } } } catch (Exception e) { FacesContext.getCurrentInstance().addMessage(null, new FacesMessage( FacesMessage.SEVERITY_FATAL, "Erro", "Houve um erro ao tratar o CSV")); } }