Problemas ao remover item com Hibernate

Olá galera,

Seguinte, to com problema pra revomer um item de um Set de uma entity root. O problema é que eu removo o item da collection na boa, mas quando executo o merge(obj) e faço o commit o objeto retornado continua com o item lá na collection.

Tenho certeza que é algo que eu não to sabendo fazer e é por isso que eu to aqui. :slight_smile:

Como bom perguntador, seguem os trechos de código pertinentes.

Relacionamento no objeto root.

@OneToMany(mappedBy = "event", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    private Set<Subscription> subscriptions;

Relacionamento no objeto que eu quero remover.

@ManyToOne(cascade = CascadeType.ALL, optional = false)
    @JoinColumn(name = "eventId", referencedColumnName = "id")
    private Event event;

Código onde eu removo o objeto e peço o update.

event.remove(subscription);
repository.update(event);

Tem um Decorator no meio dessa chamada mas tudo o que ele faz é chamar o metodo merge do DAO conforme nesse código.

public PersistentObject merge(PersistentObject obj) {
        em = getEntityManager();
        EntityTransaction tx = em.getTransaction();
        try {
            tx.begin();
            obj = em.merge(obj);
            tx.commit();
            return obj;
        } catch (PersistenceException pe) {
            pe.printStackTrace();
            if (tx.isActive())
                tx.rollback();
            throw pe;
        } finally {
            close();
        }
}

E aí? Alguma dica?

Abração,

Oi felipe

respondendo um topico velho, mas acabei caindo aqui: o relacionamento do lado mappedBy é sempre ignorado em relacao a updates. decidiram isso na JPA para evitar o grande inferno que eram as regras de sincronizacao de relacionamentos bidirecionais no CMP 2.x