Ajuda com logica em um metodo

0 respostas
L

Boa noite,estou com dificuldades para construir um metodo que faca o extorno dos itens de um pedido qdo o mesmo for excluido. Segue o metodo:

List<Produto> l = new LinkedList<Produto>();
	public Integer extornoItensPedido(Integer id) {
		session = HibernateUtil.getInstance();
		Transaction tx = null;
		try {
			
			tx = session.beginTransaction();
//esta consulta carrega tds os itens de um determinado pedido.
			Query q = session
					.createSQLQuery(
							"select distinct * from produto p,itensvenda i,pedido pd where pd.pedidoid=i.pedidoid"
									+ " and p.produtoid=i.produtoid and pd.pedidoid= :id")
					.setInteger("id", id);
			
			Iterator pairs = q.list().iterator();			
			while (pairs.hasNext()) {
				Integer idproduto = 0;
				Object[] pair = (Object[]) pairs.next();
				idproduto = (Integer) pair[0];
				IDaoProduto idao = new DaoProduto();
				Produto p = idao.findProduto(idproduto);
				l.add(p);				
			}			
			int y = 0;
			for (Produto produto : l) {
//aqui eu atualizo a qtd do produto
				y = session
						.createQuery(
								"update Produto set qtdatual=(qtdatual + :qtd) where produtoid= :idproduto")
						.setInteger("qtd", l.get(0).getQtdatual()).setInteger(
								"idproduto", l.get(0).getProdutoid())
						.executeUpdate();
				System.out.print(y);
			}
			System.out.print(y);
			return y;

		} catch (HibernateException e) {
			tx.rollback();
		} finally {
			session.close();
		}

		return 0;
	}

so que ele sempre atualiza o mesmo produto no laco for,o que pode estar errado.
se alguem puder ajudar com alguma dica agradeco.

Criado 25 de abril de 2008
Respostas 0
Participantes 1