Pessoal, tenho uma classe DAOVenda que tem um método listar produtos que recebe o ID da venda como argumento. Como podem existir vários produtos em uma venda, pra cada produto ele popula o bean Item_De_Venda e depois coloca todos os beans num arraylist e envia pra um método da classe Controle que depois manda pra Visão (MVC)…
O problema é que, neste select, ele me retorna dois produtos, só que os dois produtos no array estão com o conteúdo do segundo bean populado, repetido, vejam:
public ArrayList mostrarProdutos (String id) {
try {
int j=0;
ArrayList array=new ArrayList();
con2.conecta();
String consulta="select b.pro_nome, c.idv_qtde,c.idv_valor_unitario, c.idv_valor_total " +
"from sinal a, produto b, item_de_venda c, venda d where " +
"a.sin_ven_id=d.ven_id and " +
"b.pro_id=c.produto_pro_id and " +
"c.venda_ven_id=d.ven_id and " +
"sin_id="+id;
con2.executeSQL(consulta);
while (con2.resultset.next()) {
bc.setNome(con2.resultset.getString("pro_nome"));
bc.setQuantidade(Double.parseDouble(con2.resultset.getString("idv_qtde")));
bc.setValorUnitario(Double.parseDouble(con2.resultset.getString("idv_valor_unitario")));
bc.setValorTotal(Double.parseDouble(con2.resultset.getString("idv_valor_total")));
//somente para verificar conteúdo do bean populado
System.out.println("Bean populado " +j);
System.out.println(bc.getNome());
System.out.println(bc.getQuantidade());
System.out.println(bc.getValorTotal());
System.out.println(bc.getValorUnitario());
array.add(j, bc);
System.out.println("Pegando apenas o nome do produto já adicionado no array, índice "+j);
bc=(BeanConsultaVenda) array.get(j);
System.out.println(bc.getNome());
j++;
}
//Somente para verificar conteúdo do arraylist
System.out.println("---------------------");
System.out.println("Conteúdo do array índice 0 e índice 1, apenas para teste");
bc=(BeanConsultaVenda) array.get(0);
System.out.println(bc.getNome());
bc=(BeanConsultaVenda) array.get(1);
System.out.println(bc.getNome());
return array;
} catch (SQLException ex) {
JOptionPane.showMessageDialog (null,"Não foi possível mostrar os produtos "+ ex);
ex.printStackTrace();
return null;
}
}
E a surpreendente saída no console:
Veja que, depois do while, tanto o nome do objeto 1 como do 2, é o Conversão VHS/DVD e não DVD LG e Conversão VHS/DVD.
Agradeço a atenção!