Rollback do @Transaction não funciona no Controller do VRaptor 4

1 resposta
rod_badboy

Fala ae pessoal, boa tarde.

Bem, estou com um Controller do Vraptor 4 contendo um método anotado com @Transaction, porém ele não está dando rollback.

Meu código, resumido, está assim:

@Controller
public class PessoaController {
    @Inject private PessoaDao pessoaDao;
    @Inject private EnderecoDao enderecoDao;
    @Inject private FamiliaDao familiaDao;

    @Transaction
    public void cadastrarPessoa(Pessoa pessoa) {
        try {
            enderecoDao.inserir(pessoa.getEndereco());  // executa entitymanager.persist(Endereco);
            pessoaDao.inserir(pessoa); // executa entitymanager.persist(Pessoa);
            if(pessoa.getFamilia().getID == null) {
                familiaDao.inserir(pessoa.getFamilia()); // executa entitymanager.persist(Familia);
            }
            else {
                familiaDao.atualizar(pessoa.getFamilia()); // executa entitymanager.merge(Familia);
            }
        }
        catch(Exception e) {
            system.out.println(" Erro no Cadastro de Pessoa = " + e.toString());
        }
    }
}

Então, se ocorrer um erro (Exception) no momento de cadastrar a Familia os cadastros de Endereço e de Pessoa não dão Rollback. Fiz a mesma coisa em PessoaDao e funcionou numa boa, porém chamar pessoaDao.cadastrarPessoa() e dentro dele fazer Insert/Update de outras tabelas ou chamar outros Daos dentro dele não está me parecendo ser “correto”. Então resolvi anotar o método no Controller com o @Transaction.
Como eu posso resolver isso?

Abraço…

1 Resposta

ErickRAR

Não seria mais fácil configurar o cascade dos seus relacionamentos?

Criado 4 de setembro de 2014
Ultima resposta 4 de set. de 2014
Respostas 1
Participantes 2