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

Dúvida com relação às categorias duplicadas

Boa tarde pessoal,

Ao rodar o código desse exercício, o enunciado diz que a ultima categoria deveria ser mostrada repetida, o que no meu caso não ocorreu. Existe algum detalhe que eu não percebi?

public List <Categoria> listaComProdutos() throws SQLException{
        List <Categoria> categorias = new ArrayList<Categoria>();
        Categoria ultima = null;
        String sql = "select c.id as c_id, c.nome as c_nome, p.id as p_id, p.nome as p_nome, p.descricao as p_descricao from Categoria as c join Produto as p on p.categoria_id = c.id";
        try (PreparedStatement stmt  = con.prepareStatement(sql)){
            stmt.execute();
            try (ResultSet rs = stmt.getResultSet()){
                while (rs.next()) {
                    int id = rs.getInt("c_id");
                    String nome = rs.getString("c_nome");
                    if(ultima==null || !ultima.getNome().equals(nome)) {
                        Categoria categoria = new Categoria(nome, id);
                        categorias.add(categoria);
                        ultima = categoria;
                    }
                    int p_id = rs.getInt("p_id");
                    String p_nome = rs.getString("p_nome");
                    String p_descricao = rs.getString("p_descricao");
                    ultima.adiciona(p_nome, p_descricao, p_id);
                }
            }
        }
        return categorias;
    }
import java.sql.Connection;
import java.util.List;

public class TestaListaDAO {

    public static void main(String[] args) {
        List<Categoria> categorias;
        ConnectionPool cp = new ConnectionPool();
        try (Connection con = cp.conecta()) {
            CategoriaDAO cdao = new CategoriaDAO(con);
            categorias = cdao.listaComProdutos();
            for (Categoria categoria : categorias) {
                List<Produto> lista = categoria.getProdutos();
                for (Produto produto : lista) {
                    System.out.println(categoria.getNome() +"-"+ produto.getNome() );
                }
            }
            System.out.println("Total de categorias: " + categorias.size());
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

Obrigado!

1 resposta
solução!

Oi André, pode não ter acontecido porque, por uma coincidência, suas categorias foram cadastradas sequencialmente :).