Opa pessoal, estou desenvolvendo um software de pizzaria que empaquei em uns relacionamentos.
É o seguinte, tenho a classe Fornecedor que tem as variáveis
[code]@Entity
@Table(name=“tbl_fornecedor”)
public class Fornecedor {
@Id
@GeneratedValue
@Column(name="id_fornecedor")
private long id;
@Column(name = "nome", nullable = false, unique=true , length = 50)
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(mappedBy="fornecedor", fetch=FetchType.EAGER)
@Cascade(CascadeType.ALL)
private List<Produto> produtos;
//Getters e Setters[/code]
Traduzindo, ele tem uma lista de produtos.
E tenho a classe produtos, que cada produto tem um fornecedor
[code]@Entity
@Table(name = “tbl_produto”)
public class Produto {
@Id
@GeneratedValue
@Column(name = "id_produto")
private long id;
@Column(name = "nome", nullable = false, length = 50)
private String nome;
@Column(name = "preco_unitario", length = 10, nullable = false)
private double precoUnitario;
@Column(name = "preco_venda", length = 10, nullable = false)
private double precoVenda;
@Column(name = "unidade_medida", length = 10, nullable=false)
private String unidadeMedida;
@Column(name = "quantidade_disponivel", length = 20, nullable=false)
private int quantidadeDisponivel;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id_fornecedor", insertable = true, updatable = true)
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)
private Fornecedor fornecedor;
@Column(name = "tipo", length=10)
private String tipo;
//Getters e Setters[/code]
Então, consegui salvar aqui pra relacionar e tal, mas eu só consigo salvando pelo fornecedor, estou utilizando Hibernate.
Código que fiz:
[code] Fachada fachada = Fachada.obterInstancia();
Produto p = new Produto();
Fornecedor f = new Fornecedor();
//Produto 1
p.setNome("Cervejinha teste");
p.setPrecoUnitario(2);
p.setPrecoVenda(3);
p.setQuantidadeDisponivel(1);
p.setTipo("Bebida");
p.setUnidadeMedida("g");
//Seta o fornecedor
f.setId(4);
f.setNome("rs");
//Seta o produto no fornecedor
List<Produto> produtos = new ArrayList<Produto>();
produtos.add(p);
//Seta a lista de produtos no fornecedor, e o fornecedor nos produtos.
f.setProdutos(produtos);
p.setFornecedor(f);
//Salva o Produto
fachada.atualizarFornecedor(f);[/code]
Sendo que só consegui salvar o produto atualizando o fornecedor, e o problema que ele não deixa eu atualizar o fornecedor com o mesmo nome, prai eu teria que dar um update com o nome diferente, depois dar outro update com o nome que estava, e não quero fazer essa gambiarra, tentei salvar o produto pelo fachada.salvarProduto§ já que ai eu seto em Produto o fornecedor p.setFornecedor(f);
mas ele sempre dá nullpointer.
Alguem consegue me ajudar ?