Erro JPA Merge e Remove (ManyToMany)

0 respostas
frederico.vieira

Pessoal, ao tentar remover ou fazer merge de um objeto usuário do meu DB, a seguinte exceção é disparada:

javax.persistence.EntityNotFoundException: deleted entity passed to persist: [br.com.pacote.entidades.usuario.Permissoes#]

O meu relacionamento esta assim:

Tenho a entidade Usuario que tem uma coleção de permissões

//Como a JPA na sua vesão 1.0 não suporta a remoção de objetos filhos
    //tenho que usar o método DELETE_ORPHAN do Hibernate
    @Cascade(value = { org.hibernate.annotations.CascadeType.DELETE_ORPHAN } )     
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "usuario", fetch=FetchType.EAGER)
    private Set<Permissoes> permissoesCollection;

Na entidade Permissao, tenho a referência de usuário e um mapeamento ManyToMany para operacoes:

@JoinColumn(name = "USUARIO_OID", referencedColumnName = "OID")
    @ManyToOne
    private Usuario usuario;

    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "PERMISSOESOPERACOES", joinColumns =  {
            @JoinColumn(name = "PERMISSAO_OID", referencedColumnName = "OID")
        }, inverseJoinColumns =  {
            @JoinColumn(name = "OPERACAO_OID", referencedColumnName = "OID")
        })
    private Set<Operacao> operacoesCollection;

Esse relacionamento é unidirecional e somente a entida Permissao tem referências de Operacao. Ao tentar remover ou fazer merge a exeção mencionada acima é disparada.

Tenho certeza que o problema esta ao tentar remover objetos do mapeamento de muitos para muitos, mas até agora não consegui achar a solução.

Alguém já passou por algo assim e sabe me dizer o que fazer? Talvez seja bobeira minha mesmo, e não consegui perceber.

Detalhe importante. Debugando o código, o objeto de usuário esta completo, com todas as permissões e suas respectivas operações.

Att,

Fred

Criado 7 de março de 2008
Respostas 0
Participantes 1