IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

Les donnees ne sont pas mises à jour meme avec un refresh


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 45
    Points : 42
    Points
    42
    Par défaut Les donnees ne sont pas mises à jour meme avec un refresh
    Bonjour,
    j'utilise hibernate dans une application web,
    Quand je fais la mise à jour d'un objet, la base est bien modifiée mais quand j'interroge cet objet modifiéé à partir de l'application, l'objet conserve les anciennes donnees, j'ai vu la faq, j'ai fait le refresh , mais pas de nouveau
    voici un bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    Session session;
    session = HibernateSessionFactory.getSession();
    FConfigRoues = (SwibConsulting.hibernate.FConfigRoues) session
    .load("SwibConsulting.hibernate.FConfigRoues",Integer.parseInt(request.getParameter("idroue")) );
     
    //je fais mes modification avec les .set
    session.beginTransaction(); 
    Transaction tx = session.beginTransaction();
    session.save(FConfigRoues); 
    session.flush();
    session.refresh(FConfigRoues);		
    tx.commit();
    session.close();
    la base était bien modifiéé

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Si tu modifies un objet qui existe déjà en base, pas besoin du save, les setters suffiront.

    Ton refresh ne sert à rien, puisque ton objet est déjà attaché à une session.

    Pourquoi ouvres-tu deux transactions ?
    session.beginTransaction();
    Transaction tx = session.beginTransaction();

  3. #3
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 45
    Points : 42
    Points
    42
    Par défaut
    Bonjour, merci pour votre aide,
    j'ai corrigé, j'ai supprimé la ligne session.beginTransaction();
    mais rien n'est changé, toujours il n'y a pas de synchronisation

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Ouvre ta transaction juste après ton getSession() et vire le save et le refresh.

  5. #5
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 45
    Points : 42
    Points
    42
    Par défaut
    Bonjour,
    encore merci beaucoup pour votre aide,
    le probléme est résolu mais est ce que tu peux m'éxpliquer pourquoi le changement de la place de l'ouverture de la transaction a cet effet

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Je ne saurais expliquer précisemment le pourquoi du comment, cependant, il faut savoir une chose:

    Tout accès à une base de données doit se faire dans une transaction, y compris de la lecture de données.
    Donc, la bonne manière de procéder, est de récupérer la session Hibernate, ouvrir une transaction, faire son travail avec Hibernate, (save, load, etc), commiter la transaction et fermer la session.
    Tu as un chapitre dans la documentation qui explique tout ça.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [LINQ to SQL] les valeurs de la table ne sont pas mises à jour
    Par Paul Van Walleghem dans le forum Accès aux données
    Réponses: 0
    Dernier message: 24/02/2009, 11h39
  2. Réponses: 6
    Dernier message: 15/08/2008, 12h09
  3. Réponses: 3
    Dernier message: 29/11/2007, 14h19
  4. vb2005 les contrôls ne sont pas les memes
    Par salrouge dans le forum Windows Forms
    Réponses: 5
    Dernier message: 02/05/2007, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo