OptimisticLockException não capturada!

Ola a todos,

O método abaixo não captura a OptimisticLockException, sempre esta caindo direto na Exception logo abaixo. Algum palpite pessoal?

   public String edit() {
        EntityManager em = getEntityManager();
        try {
            em.getTransaction().begin();
            cliente = em.merge(cliente);
            em.getTransaction().commit();
            addSuccessMessage("Cliente was successfully updated.");
        } catch (OptimisticLockException ex) {            
            addErrorMessage(" Registro alterado por outro usuario !");
            em.getTransaction().rollback();
        } catch (Exception ex) {
            try {
                addErrorMessage(ex.getLocalizedMessage());
                em.getTransaction().rollback();
            } catch (Exception e) {
                addErrorMessage(e.getLocalizedMessage());
            }
        } finally {
            em.close();
        }
        return "cliente_list";
    }

aqui esta a exception lançada:
Exception [TOPLINK-5010] (Oracle TopLink Essentials - 2006.8 (Build 060830)): oracle.toplink.essentials.exceptions.OptimisticLockException Exception Description: The object [entidade.Cliente@1c66812] cannot be merged because it has changed or been deleted since it was last read. {3}Class&gt entidade.Cliente

Sds

Verifique se o seu import está correto. Você pode estar tentando capturar uma OptmisticLockException de algum outro pacote que não o do oracle.toplink.essentials.exceptions…

Ola ViniGodoy !

Já tentei por no import a classe do TopLink e tambem da JPA e o resultado é o mesmo.

Resolvido !

Voltei o import para a classe javax.persistence.OptimisticLockException e agora funcionou como esperado. Não sei porque não tinha funcionado da primeira vez… devo ter feito alguma bobagem na certa.

Ainda bem. :slight_smile:

Talvez você estivesse rodando um código num arquivo que estava compilado errado e o problema era seria resolvido com um “clean”…