Transacao no Hibernate

0 respostas
L

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;
			}
Criado 8 de maio de 2008
Respostas 0
Participantes 1