14
respostas

Lista categoria e produto não aparece

Estou tentando listar Categoria e o produtos, mas ao rodar ele só retorna com as categorias ainda. Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

14 respostas

Miguel, bom dia. Os ID's estão iguais? Na tabela de PRODUTO e CATEGORIA.

Segue a imagem das tabelas, tentei seguir o processo da proxima aula no caso ultilizando o INNER JOIN, mas ainda continua dando o mesmo erro, segue imagem também do codigo após a alteração usando o INNER JOIN. Insira aqui a descrição dessa imagem para ajudar na acessibilidade Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

Você consegue colocar seu código no github e nos mandar o link? =)

Segue o link, vai precisar também dos script do banco de dados ? https://github.com/miguel220/loja_virtual/tree/master

Miguel, eu fiz uma simulação aqui, mockando os dados e funcionou perfeitamente.

import java.util.*;

public class TestaListaCategoria {

    public static void main(String[] args) {

        CategoriaDao categoriaDao = new CategoriaDao();

        List<Categoria> categorias = categoriaDao.listaComProduto();
        categorias.stream().forEach(ct -> {
            System.out.println(ct.getNome());
                for(Produto produto : ct.getProdutos()) {
                    System.out.println(ct.getNome() + " - " + produto.getNome());
                }
        });
    }
}

class CategoriaDao {
    Produto produtoSofa = new Produto("Sofá");
    Produto produtoMovel = new Produto("Móvel");

    Produto produtoLiquidificador = new Produto("Liquidificador");
    Produto produtoGeladeira = new Produto("Geladeira");

    Categoria categoriaMoveis = new Categoria("moveis");

    Categoria categoriaEletronicos = new Categoria("eletronicos");

    public List<Categoria> listaComProduto() {
        categoriaMoveis.setProdutos(produtoSofa);
        categoriaMoveis.setProdutos(produtoMovel);
        categoriaEletronicos.setProdutos(produtoLiquidificador);
        categoriaEletronicos.setProdutos(produtoGeladeira);
        List<Categoria> categorias = new ArrayList();
        categorias.add(categoriaMoveis);
        categorias.add(categoriaEletronicos);            
        return categorias;
    }
}

class Categoria {
    private String nome;
    private List<Produto> produtos = new ArrayList();

    public Categoria(String nome) {
        this.nome = nome;
    }

    public String getNome() {
        return nome;
    }

    public List<Produto> getProdutos() {
        return produtos;
    }

    public void setProdutos(Produto produto) {
        produtos.add(produto);
    }
}

class Produto {
    private String nome;

    public Produto(String nome) {
        this.nome = nome;
    }

    public String getNome() {
        return nome;
    }
}

E o resultado:

joao-martins@N1003126:~/Área de Trabalho$ java TestaListaCategoria.java
Note: TestaListaCategoria.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
moveis
moveis - Sofá
moveis - Móvel
eletronicos
eletronicos - Liquidificador
eletronicos - Geladeira
joao-martins@N1003126:~/Área de Trabalho$ 

Acredito que no seu caso, possa ser alguma questão com as informações salvas no banco de dados.

Expotação dos dados da tabela Categoria Insira aqui a descrição dessa imagem para ajudar na acessibilidadeExportação dos dados ta tabela produtos Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Miguel, só para teste ... Vamos usar o código da maneira abaixo?

try(Connection con = new ConnectionPool().getConnection()) {
            List<Categoria> categorias = new CategoriasDAO(con).listaComProdutos();
            for(Categoria categoria : categorias) {
                System.out.println(categoria.getNome());

                for(Produto produto : categoria.getProdutos()) {
                    System.out.println(categoria.getNome() + " - " + produto.getNome());

Boa tarde Professor.

No caso, na linha: try(Connection con = new ConnectionPool().getConnection())

A classe ConectionPool, seria a classe ConnectionFactory ou esta classe foi substituida por ConnectionFactory foi substituida pela ConectionPool ao decorrer do curso ?

Miguel, boa tarde. Pode manter a connection factory =)

Boa tarde.

Infelizamente, mesmo com as alterações, ainda não deu certo.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Miguel, boa tarde!! Me manda o código da DAO, do método listaComProduto. =)

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Posso vê o conteúdo da sua classe Categoria?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade