[RESOLVIDO]JPA/Hibernate - Erro ao remover entidade usando método remove

Estou tentando remover uma entidade Empresa através do método remove e está dando o seguinte erro:

Exception in thread "main" java.lang.IllegalArgumentException: Removing a detached instance model.Empresa#6
	at org.hibernate.ejb.event.EJB3DeleteEventListener.performDetachedEntityDeletionCheck(EJB3DeleteEventListener.java:67)
	at org.hibernate.event.internal.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:107)
	at org.hibernate.event.internal.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:74)
	at org.hibernate.internal.SessionImpl.fireDelete(SessionImpl.java:956)
	at org.hibernate.internal.SessionImpl.delete(SessionImpl.java:935)
	at org.hibernate.ejb.AbstractEntityManagerImpl.remove(AbstractEntityManagerImpl.java:905)
	at dao.EmpresaDao.delete(EmpresaDao.java:73)
	at br.com.engeselt.devmanager.Main.main(Main.java:28)

Método delete:

public void delete(Empresa empresa) {
        super.openTransaction();
        super.manager.remove(empresa);
        super.closeIfOpened();
    }

Já tentei usando find, merge, getReference e nenhum funcionou então fiz uma verificação pra ver se a entidade estava realmente no contexto da transação usando:

super.manager.find(Empresa.class, empresa.getCodEmpresa());
        if (super.manager.contains(empresa)) {
            super.manager.remove(empresa);
        }

e não entrou no método remove…

estou sem recursos :?

PS: métodos que abrem e fecham a transação:

protected void openTransaction() {
        openManager();
        if (!manager.getTransaction().isActive()) {
            manager.getTransaction().begin();
        }
    }
protected void openManager(){
        if (!manager.isOpen()){
            manager = factory.createEntityManager();
        }
    }
protected void closeIfOpened() {
        if (manager.isOpen()) {
            manager.close();
        }
    }

Edit: Desculpa o topico duplo, Deu erro no navegador e achei que não tinha enviado :frowning:

Solução: Simplesmente faltava o commit apos dar o comando remove (ngm viu :roll: )

public void delete(Empresa empresa) {
        super.openTransaction();
        super.manager.remove(super.manager.getReference(Empresa.class, empresa.getCodEmpresa()));
        super.manager.getTransaction().commit();
        super.closeIfOpened();
    }

Tenta fazer:

empresa = super.manager.find(Empresa.class, empresa.getCodEmpresa());