Está acontecendo algo que nunca aconteceu comigo em outros projetos com hibernate.
Tenho apenas 10 registros em uma tabela do banco.
Inicio uma action que lista esses registros.
Ao lado de cada um deles coloquei um textbox e um botão de submit que faz update do registro com o conteúdo do textbox.
Após o update a mesma pagina é chamada listando novamente os registros.
O problema é que as vezes aparece na lista o registro anterior e não o atualizado.
Exemplo, digamos que os registros sejam:
Registro1
Registro2
Registro3…
Ai eu mudo o registro Registro2 para RegistroAtualizado e ele mostra na lista.
Registro1
RegistroAtualizado
Registro3
Oq está certo, mas se eu ficar dando F5 para listar ora ele mostra o correto como acima, ora ele mostra errado como o antigo.
Registro1
Registro2
Registro3
Ele faz isso para vários registros e fica uma loucura só !
Parece que é algum cache, mas não sei como fazer pra tirar.
Parei o servidor, startei novamente e mandei listar varias vezes.
Em todas ele trouxe os registro atualizados corretamente.
Mas se eu alterar algum e mandar listar ele faz errado de novo.
Se eu atualizar a metade e ficar dando F5, fica tudo muito doido
:lol:
Parece que resolvi o meu problema.
Pesquisei e vi que o problema poderia ser uma falha para fechar e remover uma sessão do hibernate da ThreadLocal.
Antes estava assim:
private static ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
public Session getSession() {
Session session = threadLocal.get();
if (session == null) {
session = sessionFactory.openSession();
threadLocal.set(session);
}
return session;
}