1 - Relacione Categoria e Produto usando @OneToMany, permitindo que uma categoria tenha vários produtos. Assim, estamos definindo um relacionamento 1:n do lado da categoria. Aqui, ao salvarmos uma categoria, queremos salvar seus produtos automaticamente também. Faça a configuração necessária para atender a esse requisito.
package br.com.alura.gerenciador_pedidos.model;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import java.util.List;
@Entity
public class Categoria {
@Id
private Long id;
private String nome;
@OneToMany(mappedBy = "categoria", cascade = CascadeType.ALL)
private List<Produto> produtos;
public Categoria() {
}
public Categoria(Long id, String nome) {
this.id = id;
this.nome = nome;
}
public Long getId() {
return id;
}
public String getNome() {
return nome;
}
public List<Produto> getProdutos() {
return produtos;
}
}
2 - Repare que o relacionamento criado é unidirecional: somente a classe Categoria o enxerga. Podemos deixá-lo bidirecional, configurando um relacionamento do tipo n:1 do lado do Produto, com a anotação @ManyToOne.
package br.com.alura.gerenciador_pedidos.model;
import jakarta.persistence.*;
@Entity
public class Produto {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "categoria_id")
private Categoria categoria;
@Column(nullable = false, unique = true)
private String nome;
@Column(name = "valor")
private Double preco;
public Produto() {
}
public Produto(Categoria categoria, String nome, Double preco) {
this.categoria = categoria;
this.nome = nome;
this.preco = preco;
}
public Long getId() {
return id;
}
public String getNome() {
return nome;
}
public Double getPreco() {
return preco;
}
}