Pessoal, estudei pra caramba, entendi os relacionamentos e tal, mas o que eu queria saber era na prática mesmo, sei que vai parecer que estou pedindo tudo pronto, mas é que quero estudar e aprender com os erros, então queria a ajuda de vocês, tenho algumas classes que estou mapeando com o Hibernate, já fiz algumas coisas tentando aprender, mas tá meio complicado pra mim ^^, as classes são essas:
Bebida.java
@Entity
public class Bebida {
@Id
@GeneratedValue
private long id;
@Column(name = "nome")
private String nome;
@Column(name = "fornecedor")
private String fornecedor;
@Column(name = "preco_compra")
private String precoCompra;
@Column(name = "preco_venda")
private String precoVenda;
@ManyToMany
@JoinColumn(name="id_mesa")
private List<Mesa> mesas;
}
Fornecedor.java
@Entity
public class Fornecedor {
@Id
@GeneratedValue
private long id;
@Column(name = "nome", nullable = false, unique=true , length = 70)
private String nome;
@Column(name = "telefone", length = 20)
private String telefone;
@Column(name = "endereco", length = 70)
private String endereco;
@Column(name = "numero", length = 6)
private String numero;
@Column(name = "bairro", length = 20)
private String bairro;
@Column(name = "conta", length = 30)
private String conta;
@Column(name = "banco", length = 30)
private String banco;
@Column(name = "cnpj", length = 14)
private String cnpj;
@Column(name = "email", length = 40)
private String email;
@OneToMany
@Fetch(FetchMode.JOIN)
@JoinColumn(name="id_ingrediente")
private List<Ingrediente> ingredientes;
}
Ingrediente.java
package modelo;
@Entity
public class Ingrediente {
@Id
@GeneratedValue
private long id;
@ManyToMany
@Fetch(FetchMode.JOIN)
@JoinColumn(name="id_ingrediente")
// @Column(name = "nome", nullable = false)
private List<Sabor> nomes;
@Column(name = "quantidade", nullable = false)
private String quantidade;
@Column(name = "preco_compra")
private String precoCompra;
@Column(name = "preco_venda")
private String precoVenda;
@Column(name = "lucro")
private double lucro;
@Column(name = "validade")
private String validade;
@ManyToOne()
@JoinColumn(name="id_fornecedor")
@Fetch(FetchMode.JOIN)
private Fornecedor fornecedor;
}
Mesa.java
@Entity
public class Mesa {
@Id
@GeneratedValue
private long id;
@Column(name="valor_total")
private String valorTotal;
@Column(name="produto")
@ManyToMany
private List<Bebida> bebidas;
@ManyToMany
@JoinColumn
private List<Pizza> pizzas;
}
Pizza.java
@Entity
public class Pizza {
@Id
@GeneratedValue
private long id;
@ManyToMany(fetch=FetchType.EAGER)
@JoinColumn(name="id_sabor")
private List<Sabor> sabores;
@ManyToOne
@Fetch(FetchMode.JOIN)
@JoinColumn(name="id_preco_sabor")
private Sabor precoProducao;
@Column(name = "preco_venda", nullable = false)
private String precoVenda;
@Column(name = "tamanho", nullable = false)
private String tamanho;
@ManyToMany
@JoinColumn(name="id_mesa")
private List<Mesa> mesas;
}
Sabor.java
@Entity
public class Sabor {
@GeneratedValue
@Id
private long id;
@Column(name="nome")
private String nome;
@Column(name="preco_producao")
private double precoProducao;
@ManyToMany(fetch=FetchType.EAGER)
@Fetch(FetchMode.JOIN)
@JoinColumn(name="id_ingrediente")
private List<Ingrediente> ingredientes;
private Ingrediente quantidade;
}
Obs: Removi os getters/setters para ficar mais fácil de ler.
Então seria o seguinte:
[b]Um ingrediente pode ter um fornecedor, e um fornecedor pode ter vários ingredientes.
Um ingrediente pode estar em vários sabores, e um sabor pode ter vários ingredientes (Não sei se está certo)
Uma bebida pode ter um fornecedor, e um fornecedor pode ter várias bebidas.
A mesa pode ter várias bebidas/pizzas, e pizzas/mesas poderão estar em várias mesas.
E o preco de produção da pizza vai ser o mesmo do preco de produção do sabor, então ele teria que tipo herdar aquela variavel de lá…
Queria a ajuda de vocês de como fazer isso na prática, obrigado, se puderem me ajudar ficarei muito, mas muito grato!
