@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();
}
}