Jpa - Persistir objeto com relacionamento ManyToMany

1 resposta
Paulao

Ola pessoal,

Estou desenvolvendo um modulo de controle de acesso pra um programa utilizando JPA com top Link e estou tendo problema em persistir num relacionamento muito para muitos.

Tenho uma tabela de perfil, uma de transações e uma perfil_transacoes.

O mapeamento da classe Perfil esta da seguinte forma:

@Id
    @Column(name = "PERFIL", nullable = false)
    private BigDecimal perfil;

    @Column(name = "NOMEPERFIL")
    private String nomeperfil;

    @Column(name = "STATUS")
    private String status;

    @JoinTable(name = "PERFIL_TRANSACAO", joinColumns =  {
            @JoinColumn(name = "PERFIL", referencedColumnName = "PERFIL")
        }, inverseJoinColumns =  {
            @JoinColumn(name = "TRANSACAO", referencedColumnName = "TRANSACAO")
        })
    @ManyToMany(cascade=CascadeType.PERSIST)
    private Collection<Transacao> transacaoCollection;

e estou usando o segiunte codigo para persistir:

public Erro inserir(Object obj) {
        Perfil per = (Perfil)obj;        
        t.begin();
        try{
            manager.persist(per);
            t.commit();
            er.setCodigoErro(0);
            er.setMsgErro("Perfil cadastrada com sucesso!");
        }catch (RuntimeException e){
            t.rollback();
            er.setCodigoErro(1);
            er.setMsgErro("Ocorreu um erro ->"+e.toString());
            return er;
        }
        return er;
}
 
public static void main(String[] args){
        
        Perfil perfil = new Perfil();
        perfil.setNomeperfil("Administrador");
        perfil.setStatus("Ativo");
        
        ArrayList<Transacao> lista = new ArrayList<Transacao>();        
        
        Transacao transacao = new Transacao();
        
        transacao.setNomepagina("cadastrarfuncionario.jsp");
        transacao.setNometransacao("Cadastro de Funcionario");
        transacao.setStatus("Ativo");        
        
        lista.add(transacao);
                
        perfil.setTransacaoCollection(lista);
                
        ControlaPerfil controlaPerfil = new ControlaPerfil();
        
        controlaPerfil.inserir(perfil);
        
              
                
    }

Gostaria da colaboração do forum :D

1 Resposta

Paulao

pessoal acontece o seguinte erro:

Exception in thread "main" java.lang.IllegalStateException: 
Exception Description: No transaction is currently active
        at oracle.toplink.essentials.internal.ejb.cmp3.transaction.base.EntityTransactionImpl.rollback(EntityTransactionImpl.java:125)
        at br.gov.ro.sefin.ordem.controle.ControlaPerfil.inserir(ControlaPerfil.java:40)
        at br.gov.ro.sefin.ordem.controle.ControlaPerfil.main(ControlaPerfil.java:133)
Criado 25 de abril de 2007
Ultima resposta 25 de abr. de 2007
Respostas 1
Participantes 1