Estou tentando listar Categoria e o produtos, mas ao rodar ele só retorna com as categorias ainda.
Estou tentando listar Categoria e o produtos, mas ao rodar ele só retorna com as categorias ainda.
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.
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 Exportação dos dados ta tabela produtos
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.
Miguel, boa tarde!! Me manda o código da DAO, do método listaComProduto. =)
Posso vê o conteúdo da sua classe Categoria?