1
resposta

Desafio: Mapeando Relacionamentos

@Entity
public class Categoria {

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

    private String nome;

    @OneToMany(mappedBy = "categoria", cascade = CascadeType.ALL, orphanRemoval = true)
    private List<Produto> produtos = new ArrayList<>();

    // Getter, setter e helper
    public void adicionarProduto(Produto produto) {
        produto.setCategoria(this);
        produtos.add(produto);
    }

    // equals, hashCode, toString...
}



@Entity
public class Produto {

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

    private String nome;
    private BigDecimal preco;

    @ManyToOne
    @JoinColumn(name = "categoria_id")
    private Categoria categoria;

    // Getters e setters
}


@Entity
public class Pedido {

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

    private LocalDate data = LocalDate.now();

    @ManyToMany
    @JoinTable(
        name = "pedido_produto",
        joinColumns = @JoinColumn(name = "pedido_id"),
        inverseJoinColumns = @JoinColumn(name = "produto_id")
    )
    private List<Produto> produtos = new ArrayList<>();

    public void adicionarProduto(Produto produto) {
        produtos.add(produto);
    }

    // Getters e setters
}


@Entity
public class Fornecedor {

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

    private String nome;

    // Getters, setters
}


@ManyToOne
@JoinColumn(name = "fornecedor_id")
private Fornecedor fornecedor;


public class Principal {

    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("gerenciador-pedidos");
        EntityManager em = emf.createEntityManager();

        Categoria tecnologia = new Categoria();
        tecnologia.setNome("Tecnologia");

        Produto notebook = new Produto();
        notebook.setNome("Notebook");
        notebook.setPreco(new BigDecimal("3500"));

        Produto mouse = new Produto();
        mouse.setNome("Mouse");
        mouse.setPreco(new BigDecimal("120"));

        tecnologia.adicionarProduto(notebook);
        tecnologia.adicionarProduto(mouse);

        Pedido pedido = new Pedido();
        pedido.adicionarProduto(notebook);
        pedido.adicionarProduto(mouse);

        Fornecedor dell = new Fornecedor();
        dell.setNome("Dell");

        notebook.setFornecedor(dell);
        mouse.setFornecedor(dell);

        em.getTransaction().begin();
        em.persist(dell);
        em.persist(tecnologia);
        em.persist(pedido);
        em.getTransaction().commit();

        em.close();
        emf.close();
    }
}
1 resposta

Parabéns!