Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Transação de Vendas

Olá,

Estou colocando em prática o conteúdo visto neste curso, para isso estou montando um sistema de vendas. Porém, estou com problema na transação venda. Quando no .xhtml clico no botão gravar, os seguintes comandos (pseudocódigo) são executados:

if (temEstoque) { adicionaVenda(); for (produtos da venda){ baixaEstoque(produto); } }

Ambos os métodos adicionaVenda e baixaEstoque obtém uma transação e fazem commit. O problema ocorre se após o cadastro da venda ocorrer uma exceção, a venda é cadastrada no banco, mas o estoque de produtos não baixa. Sei que o problema ocorre porque na implementação são duas transações diferentes. O que poderia usar para resolver o problema usando JSF + Hibernate?

Se pudessem me indicar um material ficaria grata.

Obs: estou seguindo a implementação no mesmo padrão do curso dado.

Desde já obrigada!

2 respostas
solução!

Oi Aline, a melhor parte é que você já sabe qual é o problema :). Se você abre a transação dentro do método do dao, é aí que está o problema. A ideia é que você passe o EntityManager como argumento do construtor para o seu dao e use ele nos métodos. A transação você deveria abrir dentro do método do managed bean mesmo...

Obrigada!

Resolveu o problema.