-->
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.  [ 6 posts ] 
Author Message
 Post subject: Erhalte veraltete Daten im POJO
PostPosted: Wed Aug 24, 2005 9:25 am 
Newbie

Joined: Wed Aug 24, 2005 9:12 am
Posts: 2
Hallo,

habe folgendes Problem:
Nach einer Änderung eines Datensatzes (immer derselbe PK)
aus einem anderen Thread mittels JDBC erhalte ich im u.a. Code
immer noch das alte UserSession-Objekt.
Füge ich an dieser Stelle JDBC Code vor oder nach der Hibernate
abfrage ein, erhalte ich immer den neuen, geänderten Datensatz.
Wo bekommt Hibernate die alten Daten her und wie kann ich dieses
Verhalten abstellen?

Gruß

Christian

Hibernate version: 3.0.5

Mapping documents:
<hibernate-mapping package="hbgen.UserSession">
<class name="hbgen.UserSession.UserSessionHB" table="UserSession">
<id name="objectId" column="OID" type="long">
<generator class="native" />
</id>
<timestamp name="letzteAenderung" column="LETZTEAEND" />
<property name="userName" column="UserName" type="string" length="100" not-null="true" />
<property name="sessionId" column="SessionID" type="string" length="255" not-null="false" />
<property name="host" column="Host" type="string" length="255" not-null="false" />
</class>

</hibernate-mapping>

Code between sessionFactory.openSession() and session.close(): session.clear();
session.setCacheMode(CacheMode.IGNORE);
Criteria c = session.createCriteria(UserSessionHB.class);
c.setLockMode(LockMode.READ);
c.add(Expression.eq("userName", requestingUser));
userSessionObject = (UserSessionHB) c.uniqueResult();


Full stack trace of any exception that occurs:

Name and version of the database you are using:MySQL 4.1.x
mysql-connector-java-3011


The generated SQL (show_sql=true):

Debug level Hibernate log excerpt:


Top
 Profile  
 
 Post subject:
PostPosted: Thu Aug 25, 2005 12:22 pm 
Beginner
Beginner

Joined: Thu Jan 06, 2005 6:11 am
Posts: 32
Location: Magdeburg, Germany
bin leider Newbie, kanns deshalb nicht genau erklären - müsste nachgucken.

Aber meines Wissens beeinflusst das CacheMode Statement nur den Second Level Cache. Die Daten werden aber noch in der Session zusätzlich zwischengespeichert (sozusagen First Level Cache), und wenn die nicht weiß, dass sich da was verändert hat, bekommst du immer die alten Werte zurück.

Wie du das abschaltest weiß ich aber auch nicht...


Top
 Profile  
 
 Post subject:
PostPosted: Fri Aug 26, 2005 3:43 am 
Beginner
Beginner

Joined: Thu Jan 06, 2005 6:11 am
Posts: 32
Location: Magdeburg, Germany
void refresh(Object object)
Re-read the state of the given instance from the underlying database.
void refresh(Object object, LockMode lockMode)
Re-read the state of the given instance from the underlying database, with the given LockMode.

sind die Methoden, die helfen sollten...


Top
 Profile  
 
 Post subject:
PostPosted: Tue Aug 30, 2005 6:17 am 
Beginner
Beginner

Joined: Thu Jan 06, 2005 6:11 am
Posts: 32
Location: Magdeburg, Germany
noch weiterführend zum Thema:

http://www.hibernate.org/hib_docs/reference/en/html/performance.html

Punkt 14.5


Top
 Profile  
 
 Post subject:
PostPosted: Tue Aug 30, 2005 12:35 pm 
Newbie

Joined: Wed Aug 24, 2005 9:12 am
Posts: 2
Danke für die Tips, doch leider funktioniert kein Session.clear() oder
evict! Auch refresh führt hier nicht zum Erfolg.

Hat noch jemand einen anderen Vorschlag?


Top
 Profile  
 
 Post subject:
PostPosted: Wed Aug 31, 2005 10:20 am 
Beginner
Beginner

Joined: Thu Jan 06, 2005 6:11 am
Posts: 32
Location: Magdeburg, Germany
Poste bitte deinen Code.

Ebenso wären die Hibernate Logs extrem hilfreich. Einfach auf DEBUG Level alles mitloggen und den betreffenden Abschnitt posten.

Ich kann mir nicht so wirklich vorstellen, dass es trotzdem nicht funktionieren soll, nachdem es ja schon zwei mögliche Lösungen gibt?!?


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