Pessoal, eu faço uma alteração no banco da seguinte forma:
minhaQuery = minhaEntityManager.createNamedQuery("Objeto.findByCodigo");
minhaQuery.setParameter("codigo", codigo);
Objeto objeto = (Objeto) minhaQuery.getSingleResult();
minhaEntityManager.getTransaction().begin();
objeto.setQuantidade(quantidadeNova);
minhaEntityManager.getTransaction().commit();
Quando eu debugo a aplicação, logo após o commit eu vejo que o banco foi alterado.
Logo após eu faço uma consulta:
consultaQuery = minhaEntityManager.createNativeQuery("SELECT * FROM objeto WHERE codigo = " + codigo, Objeto.class);
consultaList.clear();
consultaList.addAll(consultaQuery.getResultList());
Mas o registro é retornado com o valor antigo, mesmo tendo sido alterado no banco.
Eu não uso cache na aplicação, tenho a seguinte configuração no persistense.xml:
<shared-cache-mode>NONE</shared-cache-mode>
Minha lista também tem aquele parametro observable marcado.
Eu percebi que se eu chamar o método clear no EntityManager depois do
commit, as alterações são refletidas mas em outros pontos da aplicação
não precisei fazer isso. Uma observação é que estes dados estão sendo
consultados numa view, mas acho que isso não interfere em nada.