Resolvido - Ler ArrayList e Recuperar informações para gravar

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.

  • gravação tem que ser item por item

    uso for ou iterator - e como ficaria ?

Vai ter que salvar item a item

Sim amigo, problema esta na recuperação do idProduto que está no ArrayList carrinho. :cry:

TEm que passar o codigo

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.

Willian,

Certo, foi só um exemplo de método. Qual informação do produto você tem dentro do carrinho?

Willian_B1m
:slight_smile: 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 :smiley:.
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";    
}