InvalidCastException while getting object out of the cache
----------------------------------------------------------

                 Key: IBATISNET-221
                 URL: https://issues.apache.org/jira/browse/IBATISNET-221
             Project: iBatis for .NET
          Issue Type: Bug
          Components: DataMapper
         Environment: IBatis.net SVN, revision 527493, .Net 2.0
            Reporter: Rogelio J. Baucells
            Priority: Critical


There is a problem in the implementation of 
CachingStatement::ExecuteQueryForObject for .Net2.0. The following scenario 
triggers the InvalidCastException:

- Create a <ResultMap>, <procedure>, <parameterMap> and <cacheModel> for a 
select statement.
- Invoke the statement with parameters that does not return any results
- Invoke the same statement again

The first invocation will store a NULL_OBJECT in the cache for this key 
(CacheModel::this[CacheKey key]), the second statement will retrieve the 
NULL_OBJECT from the cache and will cause the InvalidCastException at:

obj = (T)this.Statement.CacheModel[cacheKey];

Also the next statement will never be TRUE since obj is of type T:

if ((object)obj == CacheModel.NULL_OBJECT)

The solution for this problem would be declaring obj as object and casting to T 
at the time of returning from the method, something like:

object obj = null;
...
return (T)obj;






-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to