1
resposta

Como fica as migrations quando usamos itens em lista com relações de @ManyToOne e @OneToMany?

Eu estou na aula da criação das migrations, porém fiquei na dúvida de como devo preencher o create table no caso de ter entidades com listas que possuem a relação @OneToMany

1 resposta

Oi!

A diferença é que em uma das tabelas vai precisar da chave estrangeira da outra.

Por exemplo, no próprio projeto do curso onde um tópico pode ter várias respostas:

@Entity
@Table(name = "topicos")
public class Topico {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String titulo;
    private String mensagem;

    @OneToMany(mappedBy = "topico")
    private List<Resposta> respostas = new ArrayList<>();

    //resto do codigo...
}
@Entity
@Table(name = "respostas")
public class Resposta {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String mensagem;

    @ManyToOne
    @JoinColumn(name = "topico_id")
    private Topico topico;

    //resto do codigo...
}

As migrations seriam algo como:

create table topicos(
    id bigint not null auto_increment,
    titulo varchar(50) not null,
    mensagem varchar(255) not null,
    primary key(id)
);
create table respostas(
    id bigint not null auto_increment,
    mensagem varchar(255) not null,
    topico_id bigint not null,
    primary key(id),
    foreign key(topico_id) references topicos(id)
);