From: DE VELDER Paul (PDVL) [mailto:[EMAIL PROTECTED]
Sent: maandag 10 juli 2006 15:04
To: [email protected]
Subject: Lazy loading problem in Tutorial2 example
Hi,
I'm currently evaluating iBatis.net (DataMapper 1.5.0 and DataAccess 1.8.0) in VS2005. So I started with het Tutorial2 example I found on http://people.apache.org/dist/ibatis/ibatis.net/beta/tutorial2.zip on an Oracle 10g database.
In the supplied NUnit-test SelectAuthorAndBlogAndLazyPost() I get an error:
IBatisNet.DataMapper.SqlMapSession - Open Connection
"3501721" to "Oracle, Microsoft provider V1.0.5000.0".
IBatisNet.DataMapper.Commands.DefaultPreparedCommand -
Statement Id: [Author-Select] PreparedStatement :
[SELECT Authors.ID as
AuthorID, Authors.Name as
AuthorName, Authors.Login as
AuthorLogin, Authors.Password as
AuthorPassword, Blogs.ID as
BlogID, Blogs.Name as
BlogName, Blogs.Description as
BlogDescription FROM Authors,
Blogs
WHERE (Authors.ID = :param0
)
AND (Blogs.AuthorID =
Authors.ID)]
IBatisNet.DataMapper.Commands.DefaultPreparedCommand
- Statement Id: [Author-Select] Parameters: [param0=[value,2]]
IBatisNet.DataMapper.Commands.DefaultPreparedCommand -
Statement Id: [Author-Select] Types: [param0=[Int32, System.Int32]]
IBatisNet.DataMapper.Commands.DefaultPreparedCommand - Statement Id: [Post-Fill] PreparedStatement : [SELECT * FROM Posts WHERE (BlogID = :param0 )]
IBatisNet.DataMapper.Commands.DefaultPreparedCommand
- Statement Id: [Post-Fill] Parameters: [param0=[value,1]]
IBatisNet.DataMapper.Commands.DefaultPreparedCommand -
Statement Id: [Post-Fill] Types: [param0=[Decimal, System.Decimal]]
IBatisNet.DataMapper.SqlMapSession - Close Connection
"3501721" to "Oracle, Microsoft provider V1.0.5000.0".
TestCase
'Tutorial2.Test.TestDataMapper.SelectAuthorAndBlogAndLazyPost'
failed: System.Reflection.TargetInvocationException :
Exception has been thrown by the target of an invocation.
----> System.IndexOutOfRangeException :
Content
at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[]
arguments, SignatureStruct& sig, MethodAttributes methodAttributes,
RuntimeTypeHandle typeOwner)
at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at
System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
\Source-revision-419277\IBatisNet.DataMapper\MappedStatements\PostSelectStrategy\GenericListStrategy.cs(78,0):
at
IBatisNet.DataMapper.MappedStatements.PostSelectStrategy.GenericListStrategy.Execute(PostBindind
postSelect, RequestScope request)
\Source-revision-419277\IBatisNet.DataMapper\MappedStatements\MappedStatement.cs(917,0): at IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecutePostSelect(RequestScope request)
\Source-revision-419277\IBatisNet.DataMapper\MappedStatements\MappedStatement.cs(336,0): at IBatisNet.DataMapper.MappedStatements.MappedStatement.RunQueryForObject[T](RequestScope request, IDalSession session, Object parameterObject, T resultObject)
\Source-revision-419277\IBatisNet.DataMapper\MappedStatements\MappedStatement.cs(307,0): at IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForObject[T](IDalSession session, Object parameterObject, T resultObject)
\Source-revision-419277\IBatisNet.DataMapper\MappedStatements\MappedStatement.cs(288,0): at IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForObject[T](IDalSession session, Object parameterObject)
\Source-revision-419277\IBatisNet.DataMapper\SqlMapper.cs(735,0): at IBatisNet.DataMapper.SqlMapper.QueryForObject[T](String statementName, Object parameterObject)
C:\pdvl\downloads\ORM\iBatis\tutorial2\tutorial2\Tutorial2.Test\TestDataMapper.cs(38,0): at Tutorial2.Test.TestDataMapper.SelectAuthorAndBlogAndLazyPost()
--TargetInvocationException
at
System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String fieldName)
at
System.Data.OracleClient.OracleDataReader.GetOrdinal(String name)
\Source-revision-419277\IBatisNet.DataMapper\TypeHandlers\StringTypeHandler.cs(52,0):
at
IBatisNet.DataMapper.TypeHandlers.StringTypeHandler.GetValueByName(ResultProperty
mapping, IDataReader dataReader)
\Source-revision-419277\IBatisNet.DataMapper\Configuration\ResultMapping\ResultProperty.cs(403,0): at IBatisNet.DataMapper.Configuration.ResultMapping.ResultProperty.GetDataBaseValue(IDataReader dataReader)
\Source-revision-419277\IBatisNet.DataMapper\MappedStatements\PropertStrategy\DefaultStrategy.cs(79,0): at IBatisNet.DataMapper.MappedStatements.PropertyStrategy.DefaultStrategy.Set(RequestScope request, ResultMap resultMap, ResultProperty mapping, Object& target, IDataReader reader, Object keys)
\Source-revision-419277\IBatisNet.DataMapper\MappedStatements\ResultStrategy\ResultMapStrategy.cs(73,0): at IBatisNet.DataMapper.MappedStatements.ResultStrategy.ResultMapStrategy.Process(RequestScope request, IDataReader reader, Object resultObject)
\Source-revision-419277\IBatisNet.DataMapper\MappedStatements\MappedStatement.cs(642,0): at IBatisNet.DataMapper.MappedStatements.MappedStatement.RunQueryForList[T](RequestScope request, IDalSession session, Object parameterObject, Int32 skipResults, Int32 maxResults, RowDelegate`1 rowDelegate)
\Source-revision-419277\IBatisNet.DataMapper\MappedStatements\MappedStatement.cs(593,0): at IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForList[T](IDalSession session, Object parameterObject, Int32 skipResults, Int32 maxResults)
\Source-revision-419277\IBatisNet.DataMapper\MappedStatements\MappedStatement.cs(574,0): at IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForList[T](IDalSession session, Object parameterObject)
0 passed, 1 failed, 0 skipped, took 2,00 seconds.
Has it something to do with the type of param0? I wonder why the type of param0 for Post-Fill is Decimal, I've changed the parameterClass to int in post.xml
<select id="Post-Fill" parameterClass="int" resultMap="Post-Result" >
SELECT *
FROM Posts
WHERE
(BlogID = #value#)
</select>
Without the modification I get the same problem, but I understand what the original parameterClass="map" stands for...
Has anybody a clue of the source of my problem? Is it an error in Tutorial2 or a bug in iBatis?
Cheers,
Paul

