【问题标题】:duplicate records when updating Spring boot更新 Spring Boot 时重复记录
【发布时间】:2018-05-18 08:01:08
【问题描述】:

我正在尝试对记录进行更新,但没有进行更新,而是创建了一条新记录

我正在使用 spring boot 和 angular js。 我尝试用 if 循环,但没有成功

这是我从屏幕获取 json 并将其传递给对象的方法。

@RequestMapping(method = RequestMethod.POST, value = "/pacientes")
    public HttpStatus cadastrarPacientes(@RequestBody ObjectNode json) throws ParseException  {

        SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");

            Entidades entidades = new Entidades();  
            if(json.get("pessoa") != null && json.get("pessoa").get("entidade") != null && json.get("pessoa").get("entidade").get("idEntidade") != null ){ 
                entidades.setIdEntidade(json.get("pessoa").get("entidade").get("idEntidade").asLong()); 
                }


            Pessoas pessoas = new Pessoas();            
            pessoas.setFoto(json.get("pessoa").get("foto").textValue()  == null ? null : json.get("pessoa").get("foto").textValue());
            pessoas.setNomePai(json.get("pessoa").get("nomePai") == null ? null : json.get("pessoa").get("nomePai").textValue());
            pessoas.setNomeMae(json.get("pessoa").get("nomeMae") == null ? null : json.get("pessoa").get("nomeMae").textValue());
            pessoas.setDataNascimento(formato.parse(json.get("pessoa").get("dataNascimento").textValue()));

            Paises pais = new Paises();
            pais.setIdPais(Long.parseLong(json.get("pessoasEnderecos").get("pais").get("idPais").textValue()));

            Ufs uf = new Ufs();
            uf.setIdUf(Long.parseLong(json.get("pessoasEnderecos").get("uf").get("idUf").textValue()));


            Municipios municipio = new Municipios();
            municipio.setIdMunicipio(Long.parseLong(json.get("pessoasEnderecos").get("municipio").get("idMunicipio").textValue()));


            OrientacoesSexuais oSexual = new OrientacoesSexuais();                      
            IdentidadesGenero iGene = new IdentidadesGenero();                      
            TiposSanguineos tSanguineo = new TiposSanguineos();


            PessoasCaracteristicas pCarac = new PessoasCaracteristicas();           
            if(json.get("estatura")== null) {
                pCarac.setEstatura(null);
            }
            else {
                pCarac.setEstatura(json.get("pessoasCaracteristicas").get("estatura").asDouble());
            }


            if( json.get("peso")== null) {
                pCarac.setPeso(null);
            }
            else {
                pCarac.setPeso(json.get("pessoasCaracteristicas").get("peso").asDouble());
            }   

            pCarac.setPessoa(new Pessoas());
            pCarac.setPessoa(pessoas);
            pCarac.setEntidade(new Entidades());
            pCarac.setEntidade(entidades);          
            if(json.get("flagDeficiente")== null) {
                pCarac.setFlagDeficiente(null);
            }
            else {
                pCarac.setFlagDeficiente(json.get("pessoasCaracteristicas").get("flagDeficiente").asInt());
            }   

            if(json.get("flagDoador")== null) {
                pCarac.setFlagDoador(null);
            }
            else {
                pCarac.setFlagDoador(json.get("pessoasCaracteristicas").get("flagDoador").asInt());
            }   


            if(json.get("pessoasCaracteristicas") != null && json.get("pessoasCaracteristicas").get("tipoSanguineo") != null && json.get("pessoasCaracteristicas").get("tipoSanguineo").get("idTipoSanguineo") != null ){ 
                tSanguineo.setIdTipoSanguineo(json.get("pessoasCaracteristicas").get("tipoSanguineo").get("idTipoSanguineo").asLong()); 
                pCarac.setTipoSanguineo(new TiposSanguineos());
                pCarac.setTipoSanguineo(tSanguineo);
                }   
            pCarac.setTipoSanguineo(tSanguineo);


            if(json.get("pessoasCaracteristicas") != null && json.get("pessoasCaracteristicas").get("identidadeGenero") != null && json.get("pessoasCaracteristicas").get("identidadeGenero").get("idIdentidade") != null ){ 
                iGene.setIdIdentidade(json.get("pessoasCaracteristicas").get("identidadeGenero").get("idIdentidade").asInt()); 
                pCarac.setIdentidadeGenero(new IdentidadesGenero());
                pCarac.setIdentidadeGenero(iGene);
                }   


            if(json.get("pessoasCaracteristicas") != null && json.get("pessoasCaracteristicas").get("orientacaoSexual") != null && json.get("pessoasCaracteristicas").get("orientacaoSexual").get("idOrientacao") != null ){ 
                oSexual.setIdOrientacao(json.get("pessoasCaracteristicas").get("orientacaoSexual").get("idOrientacao").asInt()); 
                pCarac.setOrientacaoSexual(new OrientacoesSexuais());
                pCarac.setOrientacaoSexual(oSexual);
                }           

            RacaCor racaCor = new RacaCor();


            Sexo sexo = new Sexo();
            sexo.setIdSexo(Long.parseLong(json.get("pessoasFisicas").get("sexo").get("idSexo").textValue())); 

            Nacionalidades nac = new Nacionalidades();


            Escolaridade escolaridade = new Escolaridade();

            Cbos cbos = new Cbos();

            EstadosCivis estadosCivis = new EstadosCivis();


            PessoasFisicas pFisicas = new PessoasFisicas();
            pFisicas.setCarteiraProfissional(json.get("pessoasFisicas").get("carteiraProfissional")== null ? null : json.get("pessoasFisicas").get("carteiraProfissional").textValue());
            pFisicas.setCertidaoObito(json.get("pessoasFisicas").get("certidaoObito")== null ? null : json.get("pessoasFisicas").get("certidaoObito").textValue());
            pFisicas.setCodigoReservista(json.get("pessoasFisicas").get("codigoReservista")== null ? null : json.get("pessoasFisicas").get("codigoReservista").textValue());

            if (json.get("dataObito") == null) {
                pFisicas.setDataCadastroPisPasep(null);
                } else {
                pFisicas.setDataCadastroPisPasep(
                        formato.parse(json.get("pessoasFisicas").get("dataObito").textValue()));
                }

            if (json.get("dataCadastroPisPasep") == null) {
            pFisicas.setDataCadastroPisPasep(null);
            } else {
            pFisicas.setDataCadastroPisPasep(
                    formato.parse(json.get("pessoasFisicas").get("dataCadastroPisPasep").textValue()));
            }

            if (json.get("emissaoCarteiraProfissional") == null) {
            pFisicas.setDataCadastroPisPasep(null);
            } else {
            pFisicas.setDataCadastroPisPasep(
                    formato.parse(json.get("pessoasFisicas").get("emissaoCarteiraProfissional").textValue()));
            }

            pFisicas.setCpf(json.get("pessoasFisicas").get("cpf")== null ? null : json.get("pessoasFisicas").get("cpf").textValue());       
            pFisicas.setEntidade(new Entidades());
            pFisicas.setEntidade(entidades);
            if(json.get("pessoasFisicas") != null && json.get("pessoasFisicas").get("escolaridade") != null && json.get("pessoasFisicas").get("escolaridade").get("idEscolaridade") != null ){ 
                escolaridade.setIdEscolaridade(json.get("pessoasFisicas").get("escolaridade").get("idEscolaridade").asLong()); 
                pFisicas.setEscolaridade(new Escolaridade());
                pFisicas.setEscolaridade(escolaridade);
                }

            if(json.get("pessoasFisicas") != null && json.get("pessoasFisicas").get("estadoCivil") != null && json.get("pessoasFisicas").get("estadoCivil").get("idEstadoCivil") != null ){ 
                estadosCivis.setIdEstadoCivil(json.get("pessoasFisicas").get("estadoCivil").get("idEstadoCivil").asLong()); 
                pFisicas.setEstadoCivil(new EstadosCivis());
                pFisicas.setEstadoCivil(estadosCivis);
                }

            if(json.get("flagAtivo")== null) {
                pFisicas.setFlagAtivo(null);
            }
            else {
                pFisicas.setFlagAtivo(json.get("flagAtivo").intValue());
            }   

            pFisicas.setIdentidadeRg(json.get("pessoasFisicas").get("identidadeRg")== null ? null : json.get("pessoasFisicas").get("identidadeRg").textValue());
            if(json.get("pessoasFisicas") != null && json.get("pessoasFisicas").get("nacionalidade") != null && json.get("pessoasFisicas").get("nacionalidade").get("idNacionalidade") != null ){ 
                nac.setIdNacionalidade(json.get("pessoasFisicas").get("nacionalidade").get("idNacionalidade").asLong()); 
                pFisicas.setNacionalidade(new Nacionalidades());
                pFisicas.setNacionalidade(nac);
                }
            pFisicas.setOrgaoEmissorRg(json.get("pessoasFisicas").get("orgaoEmissorRg")== null ? null : json.get("pessoasFisicas").get("orgaoEmissorRg").textValue());
            pFisicas.setPessoa( new Pessoas());
            pFisicas.setPessoa(pessoas);
            pFisicas.setPisPasep(json.get("pessoasFisicas").get("pisPasep")== null ? null : json.get("pessoasFisicas").get("pisPasep").textValue());

            if(json.get("pessoasFisicas") != null && json.get("pessoasFisicas").get("racaCor") != null && json.get("pessoasFisicas").get("racaCor").get("idRacaCor") != null ){ 
                racaCor.setIdRacaCor(json.get("pessoasFisicas").get("racaCor").get("idRacaCor").asLong()); 
                pFisicas.setRacaCor(new RacaCor());
                pFisicas.setRacaCor(racaCor);
                }

            pFisicas.setSecaoEleitoral(json.get("pessoasFisicas").get("secaoEleitoral")== null ? null : json.get("pessoasFisicas").get("secaoEleitoral").textValue());
            pFisicas.setSerieCarteiraProfissional(json.get("pessoasFisicas").get("serieCarteiraProfissional")== null ? null : json.get("pessoasFisicas").get("serieCarteiraProfissional").textValue());
            pFisicas.setSexo(new Sexo());
            pFisicas.setSexo(sexo);
            pFisicas.setTituloEleitor(json.get("pessoasFisicas").get("tituloEleitor")== null ? null : json.get("pessoasFisicas").get("tituloEleitor").textValue());
            pFisicas.setUfOrgaoEmissor(json.get("pessoasFisicas").get("ufOrgaoEmissor")== null ? null : json.get("pessoasFisicas").get("ufOrgaoEmissor").textValue());
            pFisicas.setZonaEleitoral(json.get("pessoasFisicas").get("zonaEleitoral")== null ? null : json.get("pessoasFisicas").get("zonaEleitoral").textValue()); 

            if(json.get("pessoasFisicas") != null && json.get("pessoasFisicas").get("cbo") != null && json.get("pessoasFisicas").get("cbo").get("idCbo") != null ){ 
                cbos.setIdCbo(json.get("pessoasFisicas").get("cbo").get("idCbo").asLong()); 
                pFisicas.setCbo(new Cbos());
                pFisicas.setCbo(cbos);
                }


            TiposContatos tContatos = new TiposContatos();          

            PessoasContatos pContato = new PessoasContatos();
            pContato.setContato(json.get("contato")== null ? null : json.get("contato").textValue());   
            pContato.setEntidade(new Entidades());

            if(json.get("pessoasContatos") != null && json.get("pessoasContatos").get("tipoContato") != null && json.get("pessoasContatos").get("tipoContato").get("idTipoContato") != null ){ 
                tContatos.setIdTipoContato(json.get("pessoasContatos").get("tipoContato").get("idTipoContato").asInt()); 
                pContato.setTipoContato(new TiposContatos());
                pContato.setTipoContato(tContatos);
                }



            PessoasEnderecos pessoasEnderecos = new PessoasEnderecos();
            pessoasEnderecos.setCep(json.get("pessoasEnderecos").get("cep")== null ? null : json.get("pessoasEnderecos").get("cep").textValue());   
            pessoasEnderecos.setNomeLogradouro(json.get("pessoasEnderecos").get("nomeLogradouro")== null ? null : json.get("pessoasEnderecos").get("nomeLogradouro").textValue());  


            Pacientes pac = new Pacientes();    
            pac.setPessoa(new Pessoas());
            pac.setPessoa(pessoas);
            pac.setCns(json.get("cns")== null ? null : json.get("cns").textValue());
            pac.setObservacoesAlergias(json.get("observacoesAlergias")== null ? null : json.get("observacoesAlergias").textValue());        
            if(json.get("flagAlergico")== null) {
                pac.setFlagAlergico(null);
            }
            else {
                pac.setFlagAlergico(json.get("flagAlergico").asInt());
            }   

            pac.setCnsResponsavel(json.get("cnsResponsavel")== null ? null : json.get("cnsResponsavel").textValue());
            pac.setCpfResponsavel(json.get("cpfResponsavel")== null ? null : json.get("cpfResponsavel").textValue());           
            pac.setNomeResponsavel(json.get("nomeResponsavel")== null ? null : json.get("nomeResponsavel").textValue());

            //update here
            if(json.get("idPaciente").asInt() != 0) {
                pacientesService.alterar(pFisicas, pCarac,pessoasEnderecos, pac);

            }
            else { //save here
                pacientesService.cadastrarPacientes(pFisicas, pCarac,pessoasEnderecos, pac );
            }


        return HttpStatus.CREATED;
    }

我会展示我的服务等级.. 什么都没有

    //save here
         @Transactional
                public void cadastrarPacientes(PessoasFisicas pFisicas, 
 PessoasCaracteristicas pCarac,PessoasEnderecos pessoasEnderecos,  Pacientes pac) {
                    pacRepository.saveAndFlush(pac);
                    pessoasEnderecosRepository.saveAndFlush(pessoasEnderecos);  
                    pesFisicasRepository.saveAndFlush(pFisicas);
                    pescaracteristicasRepository.saveAndFlush(pCarac);

                }

//在这里更新..

    @Transactional
       public void alterar(PessoasFisicas pFisicas, PessoasCaracteristicas 
      pCarac,PessoasEnderecos pessoasEnderecos,  Pacientes pac) {
            pacRepository.saveAndFlush(pac);
            pessoasEnderecosRepository.saveAndFlush(pessoasEnderecos);  
            pesFisicasRepository.saveAndFlush(pFisicas);
            pescaracteristicasRepository.saveAndFlush(pCarac);

        }

我的错误在哪里?

我得到了这个 json 在我的背后

{"idPaciente":161,"pessoa":{"idPessoa":165,"dataNascimento":"02/01/1987"...

【问题讨论】:

  • 我认为主键丢失,这就是它创建记录而不是更新的原因
  • @Java 我已经编辑了我的问题.. 我在 json 中有一个主键
  • 您的json中有主键(idPaciente),而pac中没有,所以更新记录前需要在pac中设置主键
  • @Java 你说得对.. 把你的答案放在这里..

标签: java spring spring-boot spring-data


【解决方案1】:

您的 json 中有主键 (idPaciente),但对象 pac 中没有,因此您应该在更新记录之前设置主键。

【讨论】:

    【解决方案2】:

    确保您在编辑表单的 id 输入中没有属性 disabled="disabled"。

    【讨论】:

    • 您能否edit 提出您的问题并解释为什么这会有所帮助?
    猜你喜欢
    • 1970-01-01
    • 2020-08-12
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 2020-04-08
    • 1970-01-01
    • 2020-06-30
    相关资源
    最近更新 更多