Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Duplicando resultado da última linha no FOREACH

Quando faço a consulta usando o foreach, o último resultado aparece duas vezes. Criei duas vezes o mesmo objeto na lista?

public class ProdutoDAO {

    Connection connection ;

    public ProdutoDAO(Connection connection) {
        this.connection = connection;
    }

    public void salvarProduto(Produto produto) throws SQLException {
        String sql = "INSERT INTO PRODUTO (NOME, DESCRICAO) VALUES (?, ?)";

        try(PreparedStatement pstm = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)){

            pstm.setString(1, produto.getNome());
            pstm.setString(2, produto.getDescricao());

            pstm.execute();

            try(ResultSet rs = pstm.getGeneratedKeys()){
                while (rs.next()) {
                    produto.setId(rs.getInt(1));
                }
            }
        }
    }

    public List<Produto> listar() throws SQLException{

        List<Produto> produtos = new ArrayList<Produto>();

        String sql = "SELECT * FROM PRODUTO";

        try(PreparedStatement pstm = connection.prepareStatement(sql)){
            pstm.execute();

            try(ResultSet rs = pstm.getResultSet()){
                while (rs.next()) {
                    Produto produto = new Produto(rs.getInt(1), rs.getString(2), rs.getString(3));
                    produtos.add(produto);

                }
            }
        }
        return produtos;        
    }
}
public class TestaInsercaoComProduto {

    public static void main(String[] args) throws SQLException {

        Produto comoda = new Produto("Comoda", "Comoda Vertical");

        try(Connection con = new ConnectionFactory().recuperaConexao()){
            ProdutoDAO produtoDAO = new ProdutoDAO(con);
            produtoDAO.salvarProduto(comoda);
            List<Produto> listaDeProduto = produtoDAO.listar();
            listaDeProduto.stream().forEach(produto -> System.out.println(produto));


        }
        System.out.println(comoda);
    }

}
1 resposta
solução!

Já resolvi, tinha feito um cagadinha e imprimido a comoda de novo no final. Vlw!