Olá Pessoal,
Então, estou com um probleminha irritante com o Hibernates que recupera um objeto só quando quer… o problema está em uma página que faz o carregamento do objeto “LoginGestao” do banco de dados configura algumas coisas na página, o problema ocorre as vezes no momento de carregamento nessa linha:
l = (LoginGestor) banco.buscar(LoginGestor.class, l.getUser());
O l.getUser() vem de:
LoginGestor l = (LoginGestor) session.getAttribute("login");
sendo que também coloquei um out.println antes da tentativa de busca no banco para verificar se login que vem da sessão tem valor, e em todas situações ele tem o Objecto com o valor correto, portanto não entendo como uma hora ele consegue pegar o objeto e trazer do banco e a página funciona e em outras horas ele não consegue :(!!!
Os códigos de chamada estão assim:
ConexaoHibernate.java
public void salvar(Object o) {
session = HibernateUtility.reload();
session.beginTransaction();
session.saveOrUpdate(o);
session.getTransaction().commit();
}
public Object buscar(Class c, Serializable cod) {
return this.session.get(c, cod);
}
public Object buscar(Object o) {
Iterator it = this.getLista(o.getClass()).iterator();
while (it.hasNext()) {
Object o1 = it.next();
if (o.equals(o1)) {
return o1;
}
}
return null;
}
HibernateUtility.java (Singleton)
private static SessionFactory getFactory() {
if (factory == null) {
// factory = new Configuration().configure().buildSessionFactory();
factory = new AnnotationConfiguration().configure()
.buildSessionFactory();
}
return factory;
}
public static Session getSession() {
if (session == null) {
session = getFactory().openSession();
}
session.clear();
return session;
}
public static Session reload() {
session.clear();
return session;
}
Abraços.