Problema em excluir e salvar

4 respostas
fer.ferreira6

Boa Tarde Galera,

Poderiam me ajudar num erro.

Utilizo EclipseLink com JSF2, JPA2 e EJB’s
Estou tentando excluir e salvar um item em sequência, dessa forma:

@PersistenceContext(name = "ePB")
	private EntityManager entityManager;

for (RelatorioCampo campo : campos) {
	this.entityManager.remove(this.entityManager.find(RelatorioCampo.class, campo.getId()));
}

for (RelatorioCampo relatorioCampo : listaRelatorioCampo) {
	this.entityManager.persist(relatorioCampo);
}

Só que o que acontece, o JPA não deleta, pelo que entendi, tenta salvar sem deletar o item antes, ai gera este erro:

java.sql.SQLException: Cannot insert duplicate key row in object 'RelatorioCampo' with unique index 'IX_RELATORIOCAMPO_01'

Alguém pode me ajudar? =D

4 Respostas

Hebert_Coelho

Após o primeiro for, faça um flush().

fer.ferreira6

Com o flush funciona, porém, tem um problema.

Se eu usar flush e ocorrer algum erro após o flush, o que estiver antes dele será salvo no banco, certo?

Preciso que ocorra essas duas operações sem nenhum tipo de contato com o banco, pois caso ocorra algum erro em qualquer lugar, a transação seja cancelada.

Hebert_Coelho

fer.ferreira6:
Com o flush funciona, porém, tem um problema.

Se eu usar flush e ocorrer algum erro após o flush, o que estiver antes dele será salvo no banco, certo?

Preciso que ocorra essas duas operações sem nenhum tipo de contato com o banco, pois caso ocorra algum erro em qualquer lugar, a transação seja cancelada.

O correto então seria realizar um update ao invés de delete/persist.

fer.ferreira6

Entendo,

Ah, vou tentar usar o merge.
Obrigado Hebert Coelho.

Criado 26 de novembro de 2012
Ultima resposta 26 de nov. de 2012
Respostas 4
Participantes 2