Rafraichissement des données Hibernate

aymdeb Messages postés 39 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 25 avril 2008 - 5 nov. 2007 à 14:30
the_wwt Messages postés 177 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 16 janvier 2009 - 5 nov. 2007 à 16:28
Bonjour,

Je réalise actuellement une appli web en J2EE. J'ai une page JSP qui affiche une liste avec des données provenant d'une base MySQL en utilisant Hibernate (jusque là, pas de problème). Sous cette liste, il y a une zone de texte qui permet la saisie d'une nouvelle donnée et un bouton "Ajouter". Ce bouton ajoute la nouvelle donnée  dans la base (ça marche), crée l'objet correspondant qui est sauvegardé dans la session Hibernate et reliste les données mais là, la nouvelle données n'apparaît pas. En utilisant le debug (sous Eclipse), je vois que c'est Hibernate qui a les anciennes données, il n'a pas récupéré la nouvelle (donc logique qu'il ne l'affiche pas). Comment faire pour qu'il se mette à jour ?

Extrait des programmes
Méthode qui sauvegarde l'objet dans la session :

public

void
createOrigine(obj Objet) throws
AppliException{
   Transaction tx = null
;
   Session session = InitSessionFactory. getInstance ().getCurrentSession();
   try
{
      tx = session.beginTransaction();
      session.save(obj); 
      tx.commit();
   } catch
(HibernateException e) {
      e.printStackTrace();
      if
(tx ! = null
&& tx.isActive())
      tx.rollback();
   }
}

Méthode qui liste les objets

public

Collection<Objet> getAll() throws
CandidaturesException{

//Collection c = new ArrayList();
   Collection<Objet> cObj= new
ArrayList<Objet>();
   try

      Session session = HibernateUtil. currentSession ();
      List<Objet> Listeobjets = session.createQuery("select h from Objet as h").list();
       for
(Iterator<Objet> iterO = Listeobjets.iterator(); iterO.hasNext();) {
         Objet o = (Objet) iterO.next();
         cObj.add(o); 
      }
      return
cObj;
   } catch
(HibernateException e) {
      log
.error(e);
      throw
new
ReadInDatabaseException("E0003","Erreur de récupération en base de données",e);
   }
}

1 réponse

the_wwt Messages postés 177 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 16 janvier 2009 1
5 nov. 2007 à 16:28
Bonjour,
c'est pas commun... dans ton fichier hibernate.cfg.xml comment as tu déclaré current_session_context_class?
 thread

Si c'est ainsi et que tes deux méthodes sont appelées dans deux tread différents c'est normal...
Essaye session.flush() ou clean() ou refresh() ou reconnct()
Ou encore:
HibernateUtil.getSessionFactory().openSession();

Cordialement,
Pierrick
0
Rejoignez-nous