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

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…

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