Boa noite,estou utilizando MySql e java para desktop em uma aplicação:
Possuo duas tabelas relacionadas (vendas,item_venda) a tabela item_venda possui a FK id_venda,portanto preciso salvar a id_venda. Pois bem,consigo recuperar a mesma na hora de fazer o INSERT,como mostra meu metodo abaixo
public void adiciona(Venda venda) throws SQLException{
String adiciona = "insert into venda(data,id_cli)"
+ "values(?,?)";
PreparedStatement ps = getConnection().prepareStatement(adiciona);
ps.setDate(1, venda.getData());
ps.setInt(2,venda.getCliente().getId());
ps.execute();
ResultSet rs = ps.getGeneratedKeys();
venda.setId((rs.next())?rs.getInt(1):0);
}
Debugando vi que a id recebe o valor correto!
Agora na classe do dao do item venda,fiz o metodo dessa forma
public void adiciona(ItemVenda item) throws SQLException{
Venda venda = new Venda();
String insert = "insert into item_venda (quantidade,total_venda,id_produto,id_venda)"
+ "values (?,?,?,?)";
adiciona(insert,item.getQuantidade(),item.getTotalVenda(),item.getId_produto().getId(),
venda.getId());
}
e chamei ele assim
public void adiciona(int quantidade,Estoque id_produto,int id_venda,double totalVenda) throws SQLException{
Venda venda = new Venda();
ItemVenda item = new ItemVenda();
item.setQuantidade(quantidade);
item.setId_produto(id_produto);
venda.setId(id_venda);
item.setTotalVenda(totalVenda);
new ItemVendaDao().adiciona(item);
}
O meu problema é que na hora de chamar o metodo controller para salvar os itens da venda
control.adiciona(qnt,est,venda.getId(),valor);
me retorna o seguinte erro
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
que aponta para essa linha
adiciona(insert,item.getQuantidade(),item.getTotalVenda(),item.getId_produto().getId(),
venda.getId());
Não consigo ver aonde estou errando,gostaria de contar com a ajuda de vocês!
Desde já agradeço