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