Depois que eu adicionei mais produtos em popularBancoDeDados(), quando rodo o programa dá esse erro:
e o codigo de onde ele reclama está assim:
Depois que eu adicionei mais produtos em popularBancoDeDados(), quando rodo o programa dá esse erro:
e o codigo de onde ele reclama está assim:
Oi!
Faltou enviar o código
Opa, esse é o da ItemPedido:
public class CadastroDePedido {
public static void main(String[] args) {
popularBancoDeDados();
EntityManager em = JPAUtil.getEntityManager();
ProdutoDAO produtoDAO = new ProdutoDAO(em);
ClienteDAO clienteDAO = new ClienteDAO(em);
Produto produto = produtoDAO.buscarPorId(1l);
Produto produto2 = produtoDAO.buscarPorId(2l);
Produto produto3 = produtoDAO.buscarPorId(3l);
Cliente cliente = clienteDAO.buscarPorId(1l);
em.getTransaction().begin();
Pedido pedido = new Pedido(cliente);
pedido.adicionarItem(new ItemPedido(10, pedido, produto));
pedido.adicionarItem(new ItemPedido(40, pedido, produto2));
Pedido pedido2 = new Pedido(cliente);
pedido2.adicionarItem(new ItemPedido(2, pedido, produto3));
PedidoDAO pedidoDAO = new PedidoDAO(em);
pedidoDAO.cadastrar(pedido);
pedidoDAO.cadastrar(pedido2);
em.getTransaction().commit();
BigDecimal totalVendido = pedidoDAO.valorTotalVendido();
System.out.println("Valor total: " + totalVendido);
List<Object[]> relatorio = pedidoDAO.relatorioDeVendas();
for (Object[] obj : relatorio) {
System.out.println(obj[0]);
System.out.println(obj[1]);
System.out.println(obj[2]);
}
}
public static void popularBancoDeDados() {
Categoria celulares = new Categoria("CELULARES");
Categoria videogames = new Categoria("VIDEOGAMES");
Categoria informatica = new Categoria("INFORMATICA");
Produto celular = new Produto("RedMi Note 12", "Muito legal", new BigDecimal("800"), celulares);
Produto videogame = new Produto("PS5", "PLAYSTATION 5", new BigDecimal("2500"), videogames);
Produto notebook = new Produto("Macbook", "Macbook pro", new BigDecimal("6000"), informatica);
Cliente cliente = new Cliente("Rodrigo", "14578965897");
EntityManager em = JPAUtil.getEntityManager();
ProdutoDAO produtoDAO = new ProdutoDAO(em);
CategoriaDAO categoriaDAO = new CategoriaDAO(em);
ClienteDAO clienteDAO = new ClienteDAO(em);
em.getTransaction().begin();
categoriaDAO.cadastrar(celulares);
categoriaDAO.cadastrar(videogames);
categoriaDAO.cadastrar(informatica);
produtoDAO.cadastrar(celular);
produtoDAO.cadastrar(videogame);
produtoDAO.cadastrar(notebook);
clienteDAO.cadastrar(cliente);
em.getTransaction().commit();
em.close();
}
}
Outra classe:
public class CadastroDePedido {
public static void main(String[] args) {
popularBancoDeDados();
EntityManager em = JPAUtil.getEntityManager();
ProdutoDAO produtoDAO = new ProdutoDAO(em);
ClienteDAO clienteDAO = new ClienteDAO(em);
Produto produto = produtoDAO.buscarPorId(1l);
Produto produto2 = produtoDAO.buscarPorId(2l);
Produto produto3 = produtoDAO.buscarPorId(3l);
Cliente cliente = clienteDAO.buscarPorId(1l);
em.getTransaction().begin();
Pedido pedido = new Pedido(cliente);
pedido.adicionarItem(new ItemPedido(10, pedido, produto));
pedido.adicionarItem(new ItemPedido(40, pedido, produto2));
Pedido pedido2 = new Pedido(cliente);
pedido2.adicionarItem(new ItemPedido(2, pedido, produto3));
PedidoDAO pedidoDAO = new PedidoDAO(em);
pedidoDAO.cadastrar(pedido);
pedidoDAO.cadastrar(pedido2);
em.getTransaction().commit();
BigDecimal totalVendido = pedidoDAO.valorTotalVendido();
System.out.println("Valor total: " + totalVendido);
List<Object[]> relatorio = pedidoDAO.relatorioDeVendas();
for (Object[] obj : relatorio) {
System.out.println(obj[0]);
System.out.println(obj[1]);
System.out.println(obj[2]);
}
}
public static void popularBancoDeDados() {
Categoria celulares = new Categoria("CELULARES");
Categoria videogames = new Categoria("VIDEOGAMES");
Categoria informatica = new Categoria("INFORMATICA");
Produto celular = new Produto("RedMi Note 12", "Muito legal", new BigDecimal("800"), celulares);
Produto videogame = new Produto("PS5", "PLAYSTATION 5", new BigDecimal("2500"), videogames);
Produto notebook = new Produto("Macbook", "Macbook pro", new BigDecimal("6000"), informatica);
Cliente cliente = new Cliente("Rodrigo", "14578965897");
EntityManager em = JPAUtil.getEntityManager();
ProdutoDAO produtoDAO = new ProdutoDAO(em);
CategoriaDAO categoriaDAO = new CategoriaDAO(em);
ClienteDAO clienteDAO = new ClienteDAO(em);
em.getTransaction().begin();
categoriaDAO.cadastrar(celulares);
categoriaDAO.cadastrar(videogames);
categoriaDAO.cadastrar(informatica);
produtoDAO.cadastrar(celular);
produtoDAO.cadastrar(videogame);
produtoDAO.cadastrar(notebook);
clienteDAO.cadastrar(cliente);
em.getTransaction().commit();
em.close();
}
}
O erro acontece nessa linha:
pedido.adicionarItem(new ItemPedido(10, pedido, produto));
Ao chamar o construtor da classe ItemPedido, pois o produto sendo passado como parâmetro está null. Olhando o código, vi que ele está igual na aula, com os produtos sendo salvos corretamentes, pelo método popularBancoDeDados
que é chamado no início do método main.
Se o produto está null, é porque não teve resultado dessa consulta:
Produto produto = produtoDAO.buscarPorId(1l);
Ou seja, no seu banco de dados não tem o produto de id 1, mas deveria ter por conta do método popularBancoDeDados, que salva 3 produtos.
Eu chutaria então que você não está utilizando o banco de dados em memória H2, que foi utilizado no curso, e com isso ao rodar a classe main os registros não estão sendo salvos com os ids 1, 2 e 3.
Boa noite, prof Rodrigo.
Vdd, não estou usando o H2, estou usando o MySQL. Eu apaguei esse código que dos produtos que colocamos depois e funcionou, desse jeito:
Então vou continuar assim mesmo, ou implica em alguma coisa mais a frente no curso?
Blz, pode seguir que não vai ter problemas. Qualquer coisa é só mandar novas mensagens.
Bons estudos!