Boa noite,
Tenho 3 Tabelas, irei resumir :
Tabela Produto - PK ( idproduto )
Tabela Pedido - PK ( idPedido )
Tabela PedidoItem. - PK ( idPedidoItem ), FK (idPedido) , FK ( idProduto )
Na tabela Pedido consegui criar, salvar na sessão e depois eu recupero o campo idPedido para conseguir gravar Pedidotem.
Tenho um ArrayList ( CARRINHO ) que guarda as informações do produto, Código abaixo.
carrinho = (ArrayList)session.getAttribute("carrinho");
if(carrinho == null) carrinho = new ArrayList();
carrinho.add(produtoDAO.find(idproduto));
session.setAttribute("carrinho", carrinho);
Agora estou com dificuldade, não estou conseguindo recuperar IdProduto que está no ArrayList Carrinho para salvar na tabela PedidoItem.
Vai ter que salvar item a item
Sim amigo, problema esta na recuperação do idProduto que está no ArrayList carrinho.
pmon
Maio 20, 2017, 2:15am
#5
Willian,
Tavez possa usar:
carrinho.forEach((itemCarrinho) -> {
itemCarrinho.getIdProduto();
});
pmon não consegui, pois não existe o getIdProduto para o itemCarrinho. apenas o Produto possu esse GET.
pmon
Maio 20, 2017, 1:27pm
#7
Willian,
Certo, foi só um exemplo de método. Qual informação do produto você tem dentro do carrinho?
Willian_B1m
eu tenho todas as informações do produto, a imagem acima eu tenho um pedido já cadastrado, tenho o meu carrinho com o produto salvo na sessão. Com código abaixo eu só consigo salvar 1 item da minha lista, se tiver + de 1 item na lista (carrinho), ele gera o seguinte erro :
detached entity passed to persist
carrinho = (ArrayList) session.getAttribute("carrinho");
Iterator it= carrinho.iterator();
while(it.hasNext()){
pedidoItemDAO.save(pedidoItem);
}
return "inicio";
Então amigos, consegui resolver era problema apenas como pecorrer a lista .
Código abaixo funcionando, pecorre meu carrinho com os produtos adicionados e estão salvo na sessão.
carrinho = (ArrayList) session.getAttribute("carrinho");
Iterator<Produto> it = carrinho.iterator();
while(it.hasNext()){
Produto produto = it.next(); // fez mágica.
System.out.println(produto.getIdproduto());
pedidoItemDAO.save(pedidoItem);
}
return "inicio";
}