JPA com desktop os dados não são apresentados em tempo real

5 respostas
lordtiago

Bom dia galera GUJ,
estou montando uma aplicação em J2SE, porém estou utilizando o JPA afim de ter operações CRUDs e outros benefícios.

O problema é que andei fazendo alguns testes, e apresentou o seguinte erro:

tenho uma data de nascimento: 28/10/2000
se eu mudo esta data em outra aplicação, que se conecta no mesmo banco de dados para: 28/10/1999
e faço uma consulta na minha janela, pelo nome de usuário por exemplo, ele me volta o ano 2000 e não o alterado 1999.

Ao fechar a janela e abri-la novamente, o mesmo resultado acontece.

Só atualiza-se os dados quando eu fecho a aplicação.

Tentei usar o seguinte código ao fechar a janela:

Isso funciona da primeira vez. Da segunda não tem resultado.

Uso o toplink-essentials.

Se alguém souber como eu posso contornar esta situação, ficarei grato.

5 Respostas

J

Isso é o comportamento do cache nivel 1 do JPA, evitando consultar o banco sempre, uma vez que ele entende que tu apenas está alterando os dados a partir do JPA.
Para mudar isso, tu deve limpar a sessão antes de buscar os dados, o que obriga a consulta ao banco de dados.

leonardobhbr

jaziel.rc:
Isso é o comportamento do cache nivel 1 do JPA, evitando consultar o banco sempre, uma vez que ele entende que tu apenas está alterando os dados a partir do JPA.
Para mudar isso, tu deve limpar a sessão antes de buscar os dados, o que obriga a consulta ao banco de dados.

Exato

Ao inves de usar

SessionManager.getManager().destroyAllSessions();

use

SessionManager.getManager().clear();
lordtiago

muito obrigado,
tentarei,
qualquer dúvida posto de novo ^^

lordtiago

cannot find symbol symbol : method clear() location: class oracle.toplink.essentials.tools.sessionmanagement.SessionManager SessionManager.getManager().clear();

Aqui diz que não pode encontrar o método

leonardobhbr

Eu achei que o metodo

retornasse o EntityManager

ve se encontra qual o metodo que retorna o EntityManager pois nele que tem o metodo clear

Criado 25 de janeiro de 2011
Ultima resposta 25 de jan. de 2011
Respostas 5
Participantes 3