Olá galera, estou fazendo um método p/ realizar uma busca no meu banco.
Oque eu quero é que , o método me retorne uma lista com todos os elementos da tabela produtos que tem q quantidade maior que 0.
Métodos que fazem isso
public void buscaEstoque(){////////SOMENTE PRODUTOS COM QUANTIDADE >0. CASO CONTRARIO, O PRODUTO NAO ESTARÁ NO ESTOQUE
this.con = new ConnectionFactory().getConnection();
try {
Produto p = new Produto();
List<Produto> lista = new ArrayList<Produto>();
PreparedStatement stmt = this.con.prepareStatement("select * from produtos where quantidade>0");
ResultSet rs = stmt.executeQuery();
while (rs.next()){
p.setId(rs.getLong("id"));
p.setNome(rs.getString("nome"));
p.setClasse(rs.getString("classe"));
p.setQuantidade(rs.getInt("quantidade"));
p.setValidade(rs.getDate("validade"));
lista.add(p);
}
rs.close();
stmt.close();
for(Produto pro: lista){
System.out.println();
System.out.print("ID: "+pro.getId());
System.out.print(" Nome: "+pro.getNome());
System.out.print(" Classe: "+pro.getClasse());
System.out.print(" Quantidade: "+pro.getQuantidade());
System.out.print(" Validade: "+pro.getValidade());
System.out.println("\n");
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
A lista está voltando, com 3 elementos (eu tenho 3 elementos cadastrados no BD com quantidade >0), porém, todos os elementos que a lista me retorna estão iguais.
Retorno:
[quote]ID: 10 Nome: Uva Classe: Natural Quantidade: 60 Validade: 2011-11-25
ID: 10 Nome: Uva Classe: Natural Quantidade: 60 Validade: 2011-11-25
ID: 10 Nome: Uva Classe: Natural Quantidade: 60 Validade: 2011-11-25
[/quote]
Eu pude perceber, o elemento que fica salvo na lista, é sempre o ultimo, o que tem o ID maior.
Gostaria que a galera me ajudassem a resolver este problema. Grato
PS: Fazendo a busca direto da linha de comando do MySql, o retorno da tabela vem com os 3 elementos cadastrados certinho.