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 :

[hib 3.2.5] Criteria : Pb de lecture apres enregistrement


Sujet :

Hibernate Java

  1. #21
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    C'était plutôt entre session.update(...) ou session.save(...) et session.getTransaction().commit() que je te demandais de vérifier...

    Parce que si ce n'est pas la même session, rien ne dit que le commit est fait...
    entre un saveAction() et un loadAction() ultérieur, ce sont forcément 2 sessions différentes, car il s'agit de 2 actions struts différente. et qu'il n'y a pas de persistance de l'objet session au niveau Struts.

    Par contre dans la partie saveAction(), c'est effectivement la même session qui est utilisée

    Remarque : pour les mises à jour, je ne fais pas de session.update(...) . Je récupère l'objet, le met à jour, je fais un commit(), avant de le recharger et l'afficher (plus un commit systématique en fin de l'action struts) ; et jusqu'à preuve du contraire, je n'ai jamais eu de pb de données incorrectes à ce niveau.

  2. #22
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par pbossard Voir le message
    Remarque : pour les mises à jour, je ne fais pas de session.update(...) . Je récupère l'objet, le met à jour, je fais un commit(), avant de le recharger et l'afficher (plus un commit systématique en fin de l'action struts) ; et jusqu'à preuve du contraire, je n'ai jamais eu de pb de données incorrectes à ce niveau.
    Je ne pense pas que les données ne soient pas "persistées", le problème est plutôt "quand sont-elles persistées", et il semble bien qu'il y ait un problème ici...

    D'ailleurs, ça me rappel un problème que j'ai déjà eu dans le cas d'une méthode save qui, à la fin, appelle une méthode load pour recharger (issues toutes deux du même source d'action (DispatchAction)). j'ai dû faire un session.close() entre les 2 (par contre, je ne me rappel plus quels étaient les symptômes)

    Essaye peut-être ça, pour voir...

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #23
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    Ca y est,
    j'ai enfin trouvé la cause de mon pb....
    c'est en fait tout simple une fois qu'on a trouvé....

    Je me suis rendu compte qu'il restait des transaction non fermées sur la base..
    Dans certains cas, je faisait un commit, suivit plus loin d'une méthode pour récupérer une liste d'infos en base.
    A l'issue du commit, la session est automatiquement fermée avec la transaction. Par conséquent le Session session = Factory.getCurrentSession() de la méthode appelée, génère une nouvelle session et une nouvelle transaction. A l'issue de la méthode, la variable "session" est détruite, mais ce n'est pas le cas de la transaction ni de la session hibernate qui reste attachée au thread tomcat.

    Lors d'une action struts ultérieure, si je récupère ce thread, je retrouve également la session toujours ouverte qui y est attaché... et donc les objets hibernate correspondants, avec des données non à jour.

    Je ne comprend toujours pas pourquoi même dans ce cas les refresh ou lockMode.READ n'ont pas forcé une relecture depuis la BDD, mais la chasse aux session ouvertes à résolu mon pb.

    De la même façon, chaque catch() fait également un rollback de la transaction en cours, de manière à ne pas laisser de transaction en cours sur la base...

    En tout cas, merci a fr1man et OButterlin pour leur aide ^__^

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Empecher Lecture d'Enregistrement en cours de Modification
    Par toony dans le forum Administration
    Réponses: 4
    Dernier message: 09/12/2009, 11h18
  2. probleme de lecture après ecriture
    Par ing2009 dans le forum Réseau
    Réponses: 1
    Dernier message: 30/04/2009, 19h24
  3. Lecture et enregistrement photo et audio
    Par shakur221 dans le forum Java ME
    Réponses: 4
    Dernier message: 04/06/2008, 11h50
  4. Réponses: 18
    Dernier message: 17/01/2007, 12h49
  5. Valeur null lors de la lecture apres un insert
    Par omlip dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/07/2006, 13h56

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