[hibernate-commits] Hibernate SVN: r19462 - in core/trunk: testsuite/src/test/java/org/hibernate/test/querycache and 1 other directory.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Mon May 10 21:41:39 EDT 2010


Author: stliu
Date: 2010-05-10 21:41:38 -0400 (Mon, 10 May 2010)
New Revision: 19462

Modified:
   core/trunk/core/src/main/java/org/hibernate/cache/StandardQueryCache.java
   core/trunk/testsuite/src/test/java/org/hibernate/test/querycache/QueryCacheTest.java
Log:
HHH-5210 Query Cache effective only after closing the session that created the cache

Modified: core/trunk/core/src/main/java/org/hibernate/cache/StandardQueryCache.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/cache/StandardQueryCache.java	2010-05-11 00:49:20 UTC (rev 19461)
+++ core/trunk/core/src/main/java/org/hibernate/cache/StandardQueryCache.java	2010-05-11 01:41:38 UTC (rev 19462)
@@ -88,7 +88,7 @@
 			return false;
 		}
 		else {
-			Long ts = Long.valueOf( session.getTimestamp() );
+			Long ts = new Long( session.getFactory().getSettings().getRegionFactory().nextTimestamp());
 
 			if ( log.isDebugEnabled() ) {
 				log.debug( "caching query results in region: " + cacheRegion.getName() + "; timestamp=" + ts );

Modified: core/trunk/testsuite/src/test/java/org/hibernate/test/querycache/QueryCacheTest.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/querycache/QueryCacheTest.java	2010-05-11 00:49:20 UTC (rev 19461)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/querycache/QueryCacheTest.java	2010-05-11 01:41:38 UTC (rev 19462)
@@ -1,6 +1,7 @@
 //$Id: QueryCacheTest.java 10977 2006-12-12 23:28:04Z steve.ebersole at jboss.com $
 package org.hibernate.test.querycache;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -41,6 +42,48 @@
 	public static Test suite() {
 		return new FunctionalTestClassTestSuite( QueryCacheTest.class );
 	}
+	//https://jira.jboss.org/jira/browse/JBPAPP-4224
+	public void testHitCacheInSameSession() {
+		getSessions().evictQueries();
+		getSessions().getStatistics().clear();
+		Session s = openSession();
+		List list = new ArrayList();
+		s.beginTransaction();
+		for ( int i = 0; i < 3; i++ ) {
+			Item a = new Item();
+			a.setName( "a" + i );
+			a.setDescription( "a" + i );
+			list.add( a );
+			s.persist( a );
+		}
+		s.getTransaction().commit();
+		
+//		s.close();
+//		s=openSession();
+		
+		s.beginTransaction();
+		String queryString = "from Item";
+		// this query will hit the database and create the cache
+		s.createQuery( queryString ).setCacheable( true ).list();
+		s.getTransaction().commit();
+		
+		s.beginTransaction();
+		//and this one SHOULD served by the cache
+		s.createQuery( queryString ).setCacheable( true ).list();
+		s.getTransaction().commit();
+		QueryStatistics qs = s.getSessionFactory().getStatistics().getQueryStatistics( queryString );
+		assertEquals( 1, qs.getCacheHitCount() );
+		assertEquals( 1, qs.getCachePutCount() );
+		s.close();
+		s = openSession();
+		s.beginTransaction();
+		for(Object obj:list){
+			s.delete( obj );
+		}
+		s.getTransaction().commit();
+		s.close();
+		
+	}
 	
 	public void testQueryCacheInvalidation() throws Exception {
 		



More information about the hibernate-commits mailing list