Gente to com uma duvida!
estou criando uma classe associativa entre produto e venda!
e alem das pks das duas classes eu tb quero o atributo nome, qtd, vlr unit, vlr total.
como q eu faco esse mapeamento???
obrigado!
bom se entendi bem, só o fato de vc fazer o relacionamento uma com a outra já terá os atributos, não precisa relacionar os atributos só as PK´s…captou a idéia?
poderia esboçar melhor o que vc precisa, porque o que eu entendi já seria algo mais assim.
vc tem uma classe venda, onde o que importa por nosso esboço no momento é apenas o atributo totalVenda
vc tem outra classe produto, onde temos o valorDeVenda dele
e vc precisa de uma classe associativa chamada ItensVenda onde vc armazenará o idVenda o idProduto e ainda a qtdadeProduto e valorTotalProduto, seria algo assim?
isso mesmo igor!!!
como q faco para salvar esses atributos junto com as pks???
vlw
está fazendo o mapeamento com JPA/Hibernate utilizando anottations?
sim
Então vc precisa anotar o relacionamento de Produto e de Venda em ItensVenda como ManyToOne, sendo o relacionamento para produto uniderecional e para venda bidirecional, acrescenta um cascadeType no relacionamento da classe Venda como ALL ou PERSIST, dessa forma, ao salvar/alterar/deletar uma Venda, vai junto os seus itens, coloca seus atributos em Itens Venda normal, e na sua classe Venda vc pode criar um método chamado addItensVenda(ItensVenda iv) onde vc adiciona o item recebido a sua lista de itens que será criada a partir do relacionamento ManyToOne bidirecional.
vou te mandar minhas classes e ver oq tenho q fazer a mais!!!
Produto
@Entity
public class Produto {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int codigo_p;
@Column
private String nome;
@Column
private Float custo;
@Column
private int quantidade;
@ManyToOne
private Fornecedor fornecedor;
@ManyToOne
private Marca marca;
@Column
private Float tt_custo;
Venda
@Entity
public class Venda {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int codigo_v;
@Column
private String nome;
@Column
private Float custo;
@Column
private String fornecedor;
@Column
private int nota;
@Column
private Float valvenda;
@Column
private Date data;
@Column
private String marca;
@Column
private Float porc;
@Column
private Float lucro;
@ManyToOne
private Pagamento pagamento;
@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name="Venda_Produtopk", joinColumns=@JoinColumn(name="codigo_v"),
inverseJoinColumns=@JoinColumn(name="codigo_p"))
private List<Produto> produtos;
venda_produtopk
@Embeddable
public class Venda_Produtopk implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@ManyToOne
private Venda venda;
@ManyToOne
private Produto produto;
ae estao minhas 3 classes!!!
ve ai pra mim oq falta fazer!!!
vou te mostrar o getproduto
public List<Produto> getProdutos(){
List<Produto> hs = new ArrayList<Produto>();
model =(Vendatable) jTable.getModel();
for(int i=0; i<model.getRowCount();i++){
Produto p = new Produto();
p.setCodigo_p((Integer)model.getValueAt(i, 0));
p.setNome((String)model.getValueAt(i, 1));
p.setQuantidade((Integer)model.getValueAt(i, 2));
hs.add(p);
}
return hs;
}
vlw