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.