Problema JPA

2 respostas
Chuvinha

Galera, não estou conseguindo deletar um produto que possui vários relacionamentos.
Pra deletar todos os registros do produto nas outras tabelas coloquei um cascade:

@Entity
@Table(name = "TBL_PRD_INFO")
public class ProdutoInfo implements Serializable {

	private static final long serialVersionUID = 1L;
@OneToMany(mappedBy = "produtoInfo", cascade = { CascadeType.ALL })
	private List<ConversaoInfo> conversaoInfoList;

	@OneToMany(mappedBy = "produtoInfo", cascade = { CascadeType.ALL })
	private List<Edicao> edicaoList;
	
	@OneToMany(mappedBy = "produtoInfo", cascade = { CascadeType.ALL })
	private List<Midia> midiaList;
Meu código está assim:
public void removerPorChave(Class objeto, Integer chave) {
        EntityManager em = getEntityManager();
        
        try {
        	Object x = getEntity(objeto, chave);
        	Object y = em.merge(x);
            em.remove(y);
            em.flush();
            em.getTransaction().commit();
            em.flush();
        } catch (RuntimeException e) {
            em.getTransaction().rollback();
            throw e;
        } finally {
            em.close();
        }
    }

E está me dando esse erro:

javax.persistence.EntityNotFoundException: deleted entity passed to persist: [br.com.syncrobot.repositoriodigital.entity.ProdutoInfo#<null>]

Alguém poderia me ajudar a resolver esse problema?

2 Respostas

dev.rafael

Pode ser só um erro de transcrição, mas no seu código eu não pude ver onde a sua transação começa.

Chuvinha

A transação começa no metodo removerPorChave mesmo.
Putz, ainda não consegui resolver esse problema.
Pelo metodo flush percebi que não consigo mais ver a entidade do produto, pq ela já foi deletada.
Porém, se eu tiro esse metodo, dá erro na hora do commit (confirmar o delete). Fala que a transação não está ativa.
Alguém tem alguma sugestão para resolver esse problema?

Criado 13 de dezembro de 2010
Ultima resposta 14 de dez. de 2010
Respostas 2
Participantes 2