Bom dia galera, tudo bem?
Pessoal, to com um problema aqui que ta bem difícil de resolver.
O negócio é o seguinte…tenho uma tabela usuário que possui um código que indica o país de origem dele para pode carregar o idioma correto. O problema é que quando o usuário altera o idioma o hibernate não trás a informação atualizada com o novo código de idioma, eu já olhei no banco e o código ta mudando porém o hibernate trás o código antigo, como se tivesse cacheado o resultado e não atualiza com a nova informação. Alguém sabe me dizer como resolvo isso? Segue alguns trechos de código abaixo:
Construindo o sessionFactory:
public static Configuration buildHibernateConfigurationObject() {
System.out.println("started the configuration of the hibernate mapping");
Configuration cfg = new Configuration();
cfg.addAnnotatedClass(UserTB.class);
cfg.addAnnotatedClass(UserLocaleTB.class);
cfg.configure();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
try {
sessionFactory = cfg.configure().buildSessionFactory(serviceRegistry);
System.out.println("finished configuring the hibernate mapping");
}catch(HibernateException ex) {
System.out.println("Exception occurred while trying to build the sessionFactory\n");
ex.printStackTrace();
}
return cfg;
}
Abrindo a session:
Nesse código abaixo fiz um teste fazendo com que a cada chamada desse método retornasse um sessionFactory.openSession e funcionou corretamente, o problema é que fazendo isso estoura o pool de conexões.
public static Session getSession() {
Session session = (Session) threadLocal.get();
if(session == null) {
session = sessionFactory.openSession();
threadLocal.set(session);
}
return session;
}
Qualquer tipo de ajuda será de grande valia!