Estou com o seguinte cenário: o usuário deleta um registro da lista e depois ele tenta inserir o mesmo objeto na lista e ai recebo um erro de Unique Constraint, pois o entityManager faz um insert primeiro do delete.
Não, é requisito do sistema fazer tudo de uma vez só, pois dizem que o cliente pode abandonar a tela antes de salvar e o banco ficar com registros “sujos”.
Hebert_Coelho
Jedi_FeniX:
Não, é requisito do sistema fazer tudo de uma vez só, pois dizem que o cliente pode abandonar a tela antes de salvar e o banco ficar com registros “sujos”.
Oi?
Ele pode na mesma chamada fazer as duas coisas… O.o
public void fazAlgo(){
apagaOsTrens(lista); // transação nova begin+commit
criaOsTrens(lista); // transação nova begin+commit
}
A não ser que você esteja utilizando open session in view para controle de transação, aí só o flush nesse caso();.
Não sei se o JPA trataria como nested transaction ao tentar abrir uma nova transação em uma já existente.
O usuário na view pode tirar o relacionamento filhoDoFilho com a entidade filho, e quando ele clicar em salvar o objeto pai será persistido, pois o mesmo está na sessão.
Sim, estou usando open session in view.
O problema só ocorre quando o usuário tenta inserir o mesmo objeto dentro da mesma transação, quando são objetos novos ou objetos removidos entityManager trabalhar tranquilamente com os inserts e deletes.
Tentei detalhar um pouco mais o cenário para ajudar.... não sei se ficou bom....
Jedi_FeniX
Eu estou desde manhã procurando uma solução para esta questão e desde que me deparei com este erro tenho na cabeça que isso é um problema de modelagem e confirmei com alguns links que estão pela internet, segue um deles, aonde eles falam que este cenário é relacionado a um objeto reencarnado: