Olá Rodrigo,tudo bem?
Isso eu já tinha feito.
O cenário é parecido com o do curso, o que eu tenho é uma classe beneficiario e outra de documento, mas quando eu disparo o postman recebo o seguinte erro:
"timestamp": "2024-06-20T22:19:53.411+00:00",
"status": 500,
"error": "Internal Server Error",
"trace": "org.springframework.dao.InvalidDataAccessResourceUsageException: could not prepare statement [Column \"DOCUMENTO_ID\" not found; SQL statement:\ninsert into beneficiarios (dataatualizacao,datainclusao,datanascimento,documento_id,nome,telefone,id) values (?,?,?,?,?,?,default) [42122-224]] [insert into beneficiarios (dataatualizacao,datainclusao,datanascimento,documento_id,nome,telefone,id) values (?,?,?,?,?,?,default)]; SQL [insert into beneficiarios (dataatualizacao,datainclusao,datanascimento,documento_id,nome,telefone,id) values (?,?,?,?,?,?,default)
Só que eu não tenho essa coluna DOCUMENTO_ID. A estrutura das tabelas é a seguinte:
create table documento(
id bigint auto_increment,
tipodocumento varchar(100),
descricao varchar(100),
datainclusao varchar(100),
dataatualizacao varchar(100),
primary key(id)
);
create table beneficiarios(
id bigint auto_increment,
nome varchar(100),
telefone varchar(100),
datanascimento varchar(100),
datainclusao varchar(100),
dataatualizacao varchar(100),
primary key(id)
);
As classes do projeto são:
package com.ekan.api.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ekan.api.beneficiario.Beneficiario;
import com.ekan.api.beneficiario.BeneficiarioRepository;
import com.ekan.api.beneficiario.DadosCadastroBeneficiario;
@RestController
@RequestMapping("/beneficiarios")
public class BeneficiarioController {
@Autowired
private BeneficiarioRepository repository;
@PostMapping
@Transactional
public void cadastrar(@RequestBody DadosCadastroBeneficiario dados) {
repository.save(new Beneficiario(dados));
}
}
package com.ekan.api.beneficiario;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Embedded;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany;
import jakarta.persistence.OneToOne;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Table(name = "beneficiarios")
@Entity
@Getter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = "id")
public class Beneficiario {
public Beneficiario(DadosCadastroBeneficiario dados) {
this.nome = dados.nome();
this.telefone = dados.telefone();
this.datanascimento = dados.datanascimento();
this.datainclusao = dados.datainclusao();
this.dataatualizacao = dados.dataatualizacao();
this.documento = new Documento(dados.documento());
}
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
private String telefone;
private String datanascimento;
private String datainclusao;
private String dataatualizacao;
@ManyToOne
private Documento documento;
```
``
package com.ekan.api.beneficiario;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Table(name= "documentos")
@Entity
@Getter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = "id")
public class Documento {
public Documento(DadosDocumentos dados) {
this.tipoDocumento = dados.tipoDocumento();
this.descricao = dados.descricao();
this.dataInclusao = dados.dataInclusao();
this.dataAtualizacao = dados.dataAtualizacao();
}
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String tipoDocumento;
private String descricao;
private String dataInclusao;
private String dataAtualizacao;
}