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.  [ 4 posts ] 
Author Message
 Post subject: [hib 3.2.5] Criteria : Pb de lecture apres enregistrement
PostPosted: Fri Oct 26, 2007 10:41 am 
Newbie

Joined: Fri Oct 26, 2007 9:51 am
Posts: 9
Bonjour à tous,

Je rencontre un pb tenace sous une application Web Struts/mySql/Hibernate

Une page d'administration (par exemple) me permet de gérer une table simple (ajout, modification, suppression) via des champs de formulaire.

si je met à jour un enregistrement, la base MySQL est correctement mise à jour, l'enregistrement est correctement rechargé (via un createCriteria()), et affiché en retour à l'utilisateur.

L'utilisation d'un bouton "refresh" (qui relance le meme createCriteria() qu'après l'update) me pose de gros pboblèmes :
De façon aléatoire, ce sont les anciennes valeurs qui sont affichées en retour. Un coup de debug me montre qu'hibernate est alors persuadé que ce sont réellement les données de mon objet.

Sentant des pb de cache (alors que le cache de 2eme niveau est désactivé), j'ai rajouté quelques options espérant résoudre mon pb, mais sans succès (setFlushMode(), setCacheMode(), session.clear(), setLockMode(), session.refresh()..)

la je suis vraiment sec.. d'autant plus que ce pb apparait sur d'autres tables dans des circonstances bcp plus géantes (mise à jour de donnée via Ajax, qui du coup semblent ne pas marcher, alors que c'est hibernate qui ne recharge pas réellement les infos depuis la BDD), etc..


Voici le bout de code en question, ainsi que le mapping hibernate correspondant.

Code:
Configuration c = new Configuration();
c.setEntityResolver( new HbmEntityResolver());
c.configure();
_sessionFactory = c.buildSessionFactory();
...
...
session = _sessionFactory.getCurrentSession();
session.setFlushMode( FlushMode.ALWAYS);
session.beginTransaction();
session.setCacheMode(CacheMode.IGNORE);
session.clear();
...
...
Criteria criteria = session.createCriteria(VocalMessage.class);
criteria
    .add(Restrictions.eq("id", a_vocalMessageId))
    .setLockMode(LockMode.READ);
VocalMessage curRecord = (VocalMessage) criteria.uniqueResult();
if(curRecord != null && !Utils.isEmpty(curRecord.getId())) {
      session.refresh(curRecord, LockMode.READ);
}
actionForm.setId(curRecord getCode());
actionForm.setCode(curRecord getCode());
actionForm.setName(curRecord getDescription());
actionForm.setMessageId(curRecord getMessageIndex());
...
...
session.getTransaction().commit();



Code:
<hibernate-configuration>
  <session-factory>
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    <!-- Hibernate's automatic session context management -->
    <property name="current_session_context_class">thread</property>
    <property name="default-cascade">persist</property>
   
    <!--second-level cache -->
    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
...
...
<hibernate-mapping  package="com.test.datamodel">
  <class
      name="VocalMessage"
      table="VOCAL_MESSAGE"
      abstract="false"
      dynamic-update="false"
      dynamic-insert="false"
      select-before-update="false"
      polymorphism="implicit"
      lazy="true">
    <id
      name="id"
      type="string"
      access="property"
      unsaved-value="null">
      <column
        name="ID"
        length="10"
      />
      <generator class="assigned"/>
    </id>
    <property
      name="name"
      type="string"
      access="property"
      update="true"
      insert="true"
      lazy="false">
      <column
        name="NAME"
        length="50"
        unique="false"
        not-null="true"
      />
    </property>
    <property
      name="messageId"
      type="string"
      access="property"
      update="true"
      insert="true"
      lazy="false">
      <column
        name="MESSAGEID"
        length="5"
        unique="true"
        not-null="true"
      />
    </property>
  </class>
</hibernate-mapping>
  </session-factory>
</hibernate-configuration>



Si l'un de vous a une piste quelquonque je lui serait eternellement redevable ^__^


Merci à tous pour votre aide.

Patrick.


Top
 Profile  
 
 Post subject: Voir le sujet : http://forum.hibernate.org/viewtopic.php?t=9
PostPosted: Tue Nov 06, 2007 1:49 am 
Newbie

Joined: Mon Nov 05, 2007 1:52 am
Posts: 9
http://forum.hibernate.org/viewtopic.php?t=980884


Top
 Profile  
 
 Post subject: HI
PostPosted: Wed Nov 07, 2007 12:17 am 
Newbie

Joined: Wed Nov 07, 2007 12:14 am
Posts: 2
Welcome to my website http://www.verygoodstory.com If you are a fiction lover, here can satisfy your desire to read.There are different types of fictions here. Including:action | biography | fable | horror | humor | mystery | romance | supernatural


Top
 Profile  
 
 Post subject:
PostPosted: Mon Dec 24, 2007 8:37 am 
Newbie

Joined: Mon Dec 24, 2007 8:16 am
Posts: 3
〖^o^〗^o^ 〖^o^〗
Shakugan no Shana
Claymore
Fate-Stay Night
Rurouni Kenshin
Highschool of the dead
naruto
One Piece
Prince of Tennis
naruto
comic
Angel Sanctuary
Slam Dunk


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 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.