Index: cs/mapper/IBatisNet.DataMapper/MappedStatements/CachingStatement.cs
===================================================================
--- cs/mapper/IBatisNet.DataMapper/MappedStatements/CachingStatement.cs	(revision 587622)
+++ cs/mapper/IBatisNet.DataMapper/MappedStatements/CachingStatement.cs	(working copy)
@@ -410,14 +410,15 @@
             CacheKey cacheKey = this.GetCacheKey(request);
             cacheKey.Update("ExecuteQueryForObject");
 
-            //obj = (T)this.Statement.CacheModel[cacheKey];
             // check if this query has alreay been run 
-            if (Statement.CacheModel[cacheKey] == CacheModel.NULL_OBJECT)
+            if (Statement.CacheModel[cacheKey] is T)
+                obj = (T)this.Statement.CacheModel[cacheKey];
+            else if (Statement.CacheModel[cacheKey] == CacheModel.NULL_OBJECT)
             {
                 // convert the marker object back into a null value 
                 obj = default(T);
             }
-            else //if ((object)obj == null)
+            else
             {
                 obj = (T)_mappedStatement.RunQueryForObject(request, session, parameterObject, resultObject);
                 this.Statement.CacheModel[cacheKey] = obj;
