Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.util.List.add(Object)" because "this.produto" is null at modelo.Categoria.adicionar(Categoria.java:25) at DAO.CategoriaDAO.listarComProdutos(CategoriaDAO.java:61) at TestaListagemDeCategorias.main(TestaListagemDeCategorias.java:16)
`public class Categoria {
private Integer id;
private String nome;
private List<Produto> produto;
public Categoria(Integer id, String nome) {
this.id = id;
this.nome = nome;
}
public String getNome() {
return nome;
}
public Integer getId() {
return id;
}
public void adicionar(Produto produto) {
this.produto.add(produto);
}
public List<Produto> getProduto() {
return produto;
}
}`
public List<Categoria> listarComProdutos() throws SQLException {
Categoria ultima = null;
List<Categoria> categorias = new ArrayList<>();
String sql = "SELECT C.ID, C.NOME, P.ID, P.NOME, P.DESCRICAO FROM CATEGORIA C INNER JOIN "+
"PRODUTO P ON C.ID = P.CATEGORIA_ID";
try (PreparedStatement pstm = connection.prepareStatement(sql)) {
pstm.execute();
try (ResultSet rst = pstm.getResultSet()) {
while (rst.next()) {
if(ultima == null || !ultima.getNome().equals(rst.getString(2))) {
Categoria categoria = new Categoria(rst.getInt(1), rst.getString(2));
ultima = categoria;
categorias.add(categoria);
}
Produto produto = new Produto(rst.getInt(3),rst.getString(4),rst.getString(5));
ultima.adicionar(produto);
}
}
}
return categorias;
}
public class TestaListagemDeCategorias {
public static void main(String[] args) throws SQLException {
try (Connection connection = new ConnectionFactory().recuperarConexao()) {
CategoriaDAO categoriaDAO = new CategoriaDAO(connection);
List<Categoria> listaDeCategoria = categoriaDAO.listarComProdutos();
listaDeCategoria.stream().forEach(ct -> {
System.out.println(ct.getNome());
for(Produto produto: ct.getProduto()) {
System.out.println(ct.getNome()+ " - "+produto.getNome());
}
});
}
}