Persisting a relationship Spring boot

1

I have the following Entity classes

Patients

@Entity
@Table(name = "pacientes", schema = "sau")
public class Pacientes implements Serializable  {

    private static final long serialVersionUID = 5776384003601026304L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idPaciente")
    private Long idPaciente;


    @JoinColumn(name="idPessoa")
    @ManyToOne(cascade = CascadeType.ALL)
    private Pessoas pessoa;


    @Column(name = "nomeResponsavel")
    private String nomeResponsavel;


    @Column(name = "cpfResponsavel")
    private String cpfResponsavel;

    public Pacientes() {
    }
    //gets and sets
    }

people

@Entity
@Table(name = "pessoas", schema="glb")
public class Pessoas implements Serializable {


    private static final long serialVersionUID = -4042023941980758267L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    private Long idPessoa;


    @Temporal(TemporalType.DATE)
    private Date dataNascimento;   

    private String inscricaoEstadual;   

    private String inscricaoMunicipal;    

    private String nome;

    public Pessoas() {
    }
  //gets and sets

}

People addresses

@Entity
@Table(name = "pessoas_enderecos" ,schema="glb")
public class PessoasEnderecos implements Serializable  {


    private static final long serialVersionUID = -2560542418318988673L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long idPessoaEndereco;

    private String bloco;

    private String cep;

    private String numero;

    @JoinColumn(name="idPessoa")
    @ManyToOne(optional = false, cascade = CascadeType.ALL)
    private Pessoas pessoa;



    public PessoasEnderecos() {
    }

//gets and sets

}

I'm doing a patient registry where I have the following fields:

Name: Date of birth: State registration: Responsible Name: Responsible CPF: Zip code: Block: Number:

However, when saving, I can not write data from class PessoasEnderecos other data are recording normal. I'm getting all the data on the screen so much that I debugged the browser to see ..

Shows no error. Does anyone know what I'm missing ??

I have the following methods

Class controller

@RequestMapping(method = RequestMethod.POST, value = "/pacientes")
    public Pacientes cadastrarPacientes(@RequestBody Pacientes pac) {    
        return pacientesService.cadastrar(pac);
    }

class service

public Pacientes cadastrar(Pacientes pacientes){        
        return pacRepository.save(pacientes);       
    } 

class repository

public interface PacientesRepository extends JpaRepository<Pacientes, Integer> {


}
    
asked by anonymous 17.11.2017 / 00:04

2 answers

0

The solution was to make a new method in the PatientController classes where I get a generic object with JSON of screen objects, instantiate the objects to be persisted .. this way:

@RequestMapping(method = RequestMethod.POST, value = "/pacientes")
    public HttpStatus cadastrarPacientes(@RequestBody ObjectNode json) {
        try {
            Entidades entidades = new Entidades();
            entidades.setIdEntidade(json.get("pessoa").get("entidade").get("idEntidade").asLong());

            Pessoas pessoas = new Pessoas();
            pessoas.setNome(json.get("pessoa").get("nome").textValue());
            pessoas.setNomeSocial(json.get("pessoa").get("nomeSocial").textValue());
            pessoas.setNomeMae(json.get("pessoa").get("nomeMae").textValue());
            pessoas.setEntidade(new Entidades());
            pessoas.setEntidade(entidades);
            pessoas.setTipoPessoa(json.get("pessoa").get("tipoPessoa").textValue());

            Paises pais = new Paises();
            pais.setIdPais(json.get("pessoasEnderecos").get("pais").get("idPais").asLong());

            EstadosCivis estadosCivis = new EstadosCivis();
            estadosCivis.setIdEstadoCivil(json.get("pessoasFisicas").get("estadoCivil").get("idestadoCivil").asLong());

            Escolaridade escolaridade = new Escolaridade();
            escolaridade.setIdEscolaridade(json.get("pessoasFisicas").get("escolaridade").get("idEscolaridade").asLong());

            RacaCor racaCor = new RacaCor();
            racaCor.setIdRacaCor(json.get("pessoasFisicas").get("racaCor").get("idRacaCor").asLong());

            IdentidadesGenero idGenero = new IdentidadesGenero();
            idGenero.setIdIdentidade(json.get("identidadeGenero").get("idIdentidade").intValue());

            OrientacoesSexuais orSexuais =  new OrientacoesSexuais();
            orSexuais.setIdOrientacao(json.get("orientacaoSexual").get("idOrientacao").intValue());

            Cbos cbo = new Cbos();
            cbo.setIdCbo(json.get("pessoasFisicas").get("cbo").get("idcbo").asLong());

            Nacionalidades nac = new Nacionalidades();
            nac.setIdNacionalidade(json.get("pessoasFisicas").get("nacionalidade").get("idNacionalidade").asLong());

            Sexo sexo = new Sexo();
            sexo.setIdSexo(json.get("pessoasFisicas").get("sexo").get("idSexo").asLong());

            Cbors cbors = new Cbors();
            cbors.setIdCbor(json.get("pessoasCaracteristicas").get("cbor").get("idcbor").asLong());

            Ufs uf = new Ufs();
            uf.setIdUf(21l);

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

            Logradouros logradouro = new Logradouros();
            logradouro.setIdLogradouro(50);

            PessoasEnderecos pessoasEnderecos = new PessoasEnderecos();
            pessoasEnderecos.setCep(json.get("pessoasEnderecos").get("cep").textValue());
            pessoasEnderecos.setPessoa(new Pessoas());
            pessoasEnderecos.setPessoa(pessoas);
            pessoasEnderecos.setEntidade(new Entidades());
            pessoasEnderecos.setEntidade(entidades);
            pessoasEnderecos.setPais(new Paises());
            pessoasEnderecos.setPais(pais);
            pessoasEnderecos.setUf(new Ufs());
            pessoasEnderecos.setUf(uf);
            pessoasEnderecos.setMunicipio(new Municipios());
            pessoasEnderecos.setMunicipio(municipio);
            pessoasEnderecos.setLogradouro(new Logradouros());
            pessoasEnderecos.setLogradouro(logradouro);



            PessoasFisicas pessoasFisicas = new PessoasFisicas();           
            pessoasFisicas.setPessoa(new Pessoas());
            pessoasFisicas.setPessoa(pessoas);
            pessoasFisicas.setCarteiraProfissional(json.get("pessoasFisicas").get("identidadeRg").textValue());
            pessoasFisicas.setCbo(new Cbos());
            pessoasFisicas.setCbo(cbo);
            pessoasFisicas.setCertidaoObito(json.get("pessoasFisicas").get("certidaoObito").textValue());
            pessoasFisicas.setCns(json.get("pessoasFisicas").get("cns").textValue());
            pessoasFisicas.setCodigoReservista(json.get("pessoasFisicas").get("codigoReservista").textValue());
            pessoasFisicas.setCpf(json.get("pessoasFisicas").get("cpf").textValue());
        /*  pessoasFisicas.setDataCadastroPisPasep(json.get("pessoasFisicas").get("dataCadastroPisPasep").);
            pessoasFisicas.setDataObito(json.get("pessoasFisicas").get("dataCadastroPisPasep").);
            pessoasFisicas.setEmissaoCarteiraProfissional(json.get("pessoasFisicas").get("dataCadastroPisPasep").);*/
            pessoasFisicas.setEstadoCivil(new EstadosCivis());
            pessoasFisicas.setEstadoCivil(estadosCivis);
            pessoasFisicas.setFlagAtivo(json.get("pessoasFisicas").get("codigoReservista").asInt());
            pessoasFisicas.setIdentidadeRg(json.get("pessoasFisicas").get("codigoReservista").textValue());
            pessoasFisicas.setNacionalidade(new Nacionalidades());
            pessoasFisicas.setNacionalidade(nac);       
            pessoasFisicas.setOrgaoEmissorRg(json.get("pessoasFisicas").get("orgaoEmissor").textValue());
            pessoasFisicas.setPisPasep(json.get("pessoasFisicas").get("pisPasep").textValue());
            pessoasFisicas.setRacaCor(new RacaCor());
            pessoasFisicas.setRacaCor(racaCor);         
            pessoasFisicas.setSecaoEleitoral(json.get("pessoasFisicas").get("secaoEleitoral").textValue());
            pessoasFisicas.setSerieCarteiraProfissional(json.get("pessoasFisicas").get("serieCarteiraProfissional").textValue());
            pessoasFisicas.setSexo(new Sexo());
            pessoasFisicas.setSexo(sexo);
            pessoasFisicas.setTituloEleitor(json.get("pessoasFisicas").get("TituloEleitor").textValue());
            pessoasFisicas.setUfOrgaoEmissor(json.get("pessoasFisicas").get("ufOrgaoEmissor").textValue());
            pessoasFisicas.setZonaEleitoral(json.get("pessoasFisicas").get("zonaEleitoral").textValue());


            PessoasJuridicas pJuridica = new PessoasJuridicas();
            pJuridica.setCnpj(json.get("pessoasJuridicas").get("cnpj").textValue());
            pJuridica.setFlagAtivo(json.get("pessoasJuridicas").get("flagAtivo").intValue());
            pJuridica.setNomeFantasia(json.get("pessoasJuridicas").get("nomeFantasia").textValue());
            pJuridica.setRazaoSocial(json.get("pessoasJuridicas").get("razaoSocial").textValue());
            pJuridica.setPessoa(new Pessoas());
            pJuridica.setPessoa(pessoas);

            PessoasCaracteristicas pesCaracteristicas = new PessoasCaracteristicas();
            pesCaracteristicas.setCbor(new Cbors());
            pesCaracteristicas.setCbor(cbors);

            pesCaracteristicas.setEstatura(json.get("pessoasCaracteristicas").get("estatura").intValue());
            pesCaracteristicas.setFlagDeficiente(json.get("pessoasCaracteristicas").get("flagDeficiente").intValue());
            pesCaracteristicas.setFlagDoador(json.get("pessoasCaracteristicas").get("flagDoador").intValue());
            pesCaracteristicas.setPeso(json.get("pessoasCaracteristicas").get("peso").intValue());
            pesCaracteristicas.setPessoa(new Pessoas());
            pesCaracteristicas.setPessoa(pessoas);



            Pacientes pac = new Pacientes();
            pac.setCnsResponsavel(json.get("cns").toString());
            pac.setPessoa(new Pessoas());
            pac.setPessoa(pessoas);
            pac.setCnsResponsavel(json.get("cnsResposnavel").toString());
            pac.setCpfResponsavel(json.get("cpfResposnavel").toString());
            pac.setObservacoesAlergias(json.get("observacoesAlergias").toString());
            pac.setFlagAlergico(json.get("flagAlergico").intValue());
            pac.setFlagAtivo(json.get("flagAtivo").intValue());
            pac.setOrientacaoSexual(new OrientacoesSexuais());
            pac.setOrientacaoSexual(orSexuais);
            pac.setIdentidadeGenero(new IdentidadesGenero());
            pac.setIdentidadeGenero(idGenero);
            pac.setNomeResponsavel(json.get("nomeResponsavel").toString());

            pacientesService.cadastrarPacientes(pessoasEnderecos,pessoasFisicas,pJuridica,pesCaracteristicas, pac);


        } catch (Exception e) {
            return HttpStatus.BAD_REQUEST;
        }

        return HttpStatus.CREATED;
    }

and my service class

@Transactional
    public void cadastrarPacientes(PessoasEnderecos pessoaEndereco,  PessoasFisicas pesFisicas, PessoasJuridicas pesJuridicas, PessoasCaracteristicas pesCaracteristicas, Pacientes paciente) {
        pessoasEnderecosRepository.saveAndFlush(pessoaEndereco);
        pesFisicasRepository.saveAndFlush(pesFisicas);
        pesJuridicasRepository.saveAndFlush(pesJuridicas);
        pescaracteristicasRepository.saveAndFlush(pesCaracteristicas);
        pacRepository.saveAndFlush(paciente);

    }
    
20.11.2017 / 20:24
0

You are saving a Patients entity, this entity has a relationship with the People entity through:

   @JoinColumn(name="idPessoa")
   @ManyToOne(cascade = CascadeType.ALL)
   private Pessoas pessoa;

Because of cascade all , the People entity is also being saved, but you do not have a People PeopleEnderecos .

You should have something like this in your People entity:

  @JoinColumn(name="idPessoaEndereco")
  @ManyToOne(optional = true, cascade = CascadeType.ALL)
  private PessoasEnderecos pessoasEnderecos;
    
17.11.2017 / 13:02