-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 
Author Message
 Post subject: Pb: "StaleObjectStateException" sur un refresh()
PostPosted: Wed Jan 14, 2009 4:30 am 
Newbie

Joined: Fri Jun 30, 2006 3:44 am
Posts: 5
Hibernate version: 3.2.4

Oracle 9.2


Bonjour,

Nous avons actuellement un enregistrement d'une table mis à jour par deux process différents. Cette table est définie avec un mapping "optimistic-lock" (une colonne de version dans la table).

Sur un flush() dans un des process, il arrive que l'exception "StaleObjectStateException" soit levée: normal car l'objet a été mis à jour par l'autre process.

J'essaye alors, dans ce cas, de faire un refresh() de l'objet (qui remonte les informations correctes de la base de données y compris le numéro de version d'après le debug), de le mettre à jour après récupération des modifications éventuelles et de le sauver de nouveau. Mais l'exception "StaleObjectStateException" est de nouveau levée.


Code:
///

    homme.setAge(42);
    try
    {

        session.flush();               //-----> Levée de l'exception StaleObjectStateException

    }
    catch (StaleObjectStateException e)
    {

        session.refresh(homme);
        /*

            Récupération des valeurs éventuellement importantes sur homme faites par l'autre process

        */
        homme.setAge(42);
   
        session.flush();                     // ---> Exception StaleObjectStateException de nouveau levée

    }

///


Je pensais que le refresh() rechargeait l'état de l'objet de la base de données pour avoir un objet de nouveau cohérent dans la session.

Est-ce que j'ai manqué quelque chose ou pas compris le fonctionnement du refresh() ou est-ce qu'il n'y a aucun moyen de se récupérer dans la session après une exception?


Merci d'avance



Top
 Profile  
 
 Post subject:
PostPosted: Thu Feb 05, 2009 2:58 pm 
Newbie

Joined: Thu Jan 12, 2006 7:41 am
Posts: 10
Location: Lyon - France
as-tu essayé un flush entre le refresh et le setAge() ?

_________________
Olivier Hanny
Senior Software Engineer
http://www.icodem.fr


Top
 Profile  
 
 Post subject:
PostPosted: Mon Feb 09, 2009 5:56 am 
Newbie

Joined: Fri Jun 30, 2006 3:44 am
Posts: 5
Un flush entre le refresh() et le setAge() soulève la même exception lors du deuxième flush.

En fait, même en ne faisant qu'un refresh() et un flush() (sans modification donc des caractéristiques de "homme" dans le traitement de l'exception), l'exception StaleObjectStateException est quand même levée !!


---------------------
Lionel Lerévérend


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 3 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.