[RESOLVIDO] Persistência - Salvar tabela filho com foreign key para tabela pai, not null

Seguinte Galera,

Tenho duas entidades Administrator e Address, administrator tem um lista de address e address tem um administrator

Segue mapeamento de Administrator:

 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 @ApiModelProperty(notes = "The database generated administrator ID")
  val administrator_id: Long = 0L,

  @ApiModelProperty(notes = "The administrator name", required = true)
   val name: String = "",

  @ApiModelProperty(notes = "The administrator phone number")
   val phone: String = "",

  @OneToMany(mappedBy = "administrator", cascade = [CascadeType.ALL], fetch = FetchType.EAGER)
  @ApiModelProperty(notes = "The administrator address")
   var address: List<Address> = emptyList(),

   @ApiModelProperty(notes = "The administrator username", required = true)
    val login: String = "",

  @ApiModelProperty(notes = "The administrator password", required = true)
   val password: String = ""

Segue mapeamento de Address:

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @ApiModelProperty(notes = "The database generated address ID")
    val id: Long = 0L,

    @ApiModelProperty(notes = "The name of the street")
    val street: String = "",

    @ApiModelProperty(notes = "The name of the neighborhood")
    val neighborhood: String = "",

    @ApiModelProperty(notes = "The name of the state")
    val state: String = "",

    @ApiModelProperty(notes = "The name of the city")
    val city: String = "",

    @ApiModelProperty(notes = "The number of the CEP")
    val cep: String = "",

    @ApiModelProperty(notes = "The address complement", required = true)
    val complement: String = "",

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="administrator", insertable=true, updatable=true)
    @ApiModelProperty(notes = "The address complement", required = true)
    var administrator: Administrator? = null

O mapeamento gera as tabelas no banco, tudo certo porém quando faço a requisição para meu endpoint ele salva a entidade Administrator e Address, porém o campo de relação não é salvo. Segue requisição

{
“address”: [
{
“cep”: “00000-000”,
“city”: “Cidade”,
“complement”: “Complemento”,
“neighborhood”: “Bairro”,
“state”: “Estado”,
“street”: “Rua”
}
],
“login”: “nomedousuario”,
“name”: “nome”,
“password”: “senha”,
“phone”: “telefone”
}

Acredito que alguma coisa no mapeamento quando colocar pra salvar a entidade Administrator deva salvar tbm o endereço com o id do administrator, mas não estou conseguindo

OBS: O código está em Kotlin podem achar estranho algo na declaração das variaveis, porém a maior duvida é como salvar as duas entidades e na entidade Address ir a chave primaria da tabela Administrator

Olá!

Pelo que eu entendi a tabela pai é Administrator. Ela deve ser salva sempre antes de salvar a tabela Address. Feito isso você deve setar a referência do atributo administrator da classe Address para depois salvar esta entidade.

A ordem de salvar importa neste caso.

Espero ter ajudado. Boa sorte.

1 curtida

Isso mesmo, o que esperava é que ao mandar o payload ele fizesse o cadastro do total, ja que tem toda a relação one to many