Ola bom dia,gostaria da ajuda dos amigos na seguinte questao:
Como posso executar o seguinte metodo dentro de uma uica transacao para que caso falhe algo ele de rollback em tudo.
public Integer extornoItensPedido(Integer id) {
session = HibernateUtil.getInstance();
Transaction tx = null;
Iterator pairs = null;
Query q;
try {
tx = session.beginTransaction();
q = session.createQuery("from Itensvenda where pedidoid= :id").setInteger("id", id);
pairs = q.list().iterator();
} catch (HibernateException e) {
tx.rollback();
} finally {
session.close();
}
while (pairs.hasNext()) {
Itensvenda pair = (Itensvenda) pairs.next();
try {
session = HibernateUtil.getInstance();
tx = session.beginTransaction();
Integer baixa = session.createQuery(
"update ProdutoNumeracao set qtdatual=(qtdatual + :qtd) where produtoid= :idproduto " +
" and numeracaoid= :idnumeracao")
.setInteger("qtd", pair.getQuantidade()).setInteger("idproduto", pair.getProduto().getProdutoid())
.setInteger("idnumeracao", pair.getNumeracao().getNumeracaoid())
.executeUpdate();
tx.commit();
} catch (HibernateException e) {
tx.rollback();
} finally {
session.close();
}
}
return 1;
}