Persisting a Spring Boot Relationship

Asked

Viewed 2,178 times

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 am making a register of patients in which I have the following fields:

Name: Date of Birth: State Registration: Responsible Name: CPF Responsible for: Zip code: Block: Number:

However, when saving, I cannot save class data PessoasEnderecos other data is recording normal. I’m taking all the data from the screen so much that I debug the browser to see..

It shows no errors. Someone knows what I’m failing to do ??

I have the following methods

Controller class

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

service class

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

Repository class

public interface PacientesRepository extends JpaRepository<Pacientes, Integer> {


}

2 answers

0

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

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

Because of the Cascade all, the entity People is also being saved, but you do not have a relationship of People with Personal.

You must have something like this in your entity People:

  @JoinColumn(name="idPessoaEndereco")
  @ManyToOne(optional = true, cascade = CascadeType.ALL)
  private PessoasEnderecos pessoasEnderecos;
  • I agree with you.. but that would change my database however I can’t change.. there would be some other alternative ?

  • I don’t understand why this would change your base, but you can take the information Person, block, zip and number, set in a new Personal object and save through the save method of Personal Senderecos.

  • I did by your answer and at the time of starting the application I had the following error coluna pessoas0_.id_pessoa_endereco não existe

  • Why are you trying to access the personal id_addresse_column in the personal 0_? table shouldn’t be personal.personal id_addresses_address?

0


The solution was to make a new method in the Patience classes where I receive a generic object with the JSON of the screen objects, I instantiate the objects to be persisted.. in 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);

    }

Browser other questions tagged

You are not signed in. Login or sign up in order to post.