You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ibatis.apache.org by "Henrik Uffe Jensen (JIRA)" <ib...@incubator.apache.org> on 2005/02/15 23:16:45 UTC

[jira] Created: (IBATISNET-25) Error applying ResultMap when using 'Guid' in resultClass

Error applying ResultMap when using 'Guid' in resultClass
---------------------------------------------------------

         Key: IBATISNET-25
         URL: http://issues.apache.org/jira/browse/IBATISNET-25
     Project: iBatis for .NET
        Type: Bug
    Versions: DataMaper 1.5, DataAccess 1.5    
    Reporter: Henrik Uffe Jensen



Ran into a few other problems using 'Guid' in resultClass of a statement. 

IBatisNet.DataMapper.Configuration.Statements.CreateInstanceOfResultClass() contains
the lines:

    if (_resultClass.GetType() == typeof(Guid))
    {
	return Guid.NewGuid();
    }

but they doesn't work as expected. A 'Guid' resultClass has a System.RuntimeType as type so the Guid.NewGuid() isn't used. I instead did the following using the FullName of the resultClass and the string representation of the type.

    if (_resultClass.FullName == typeof(Guid).ToString())
    {
	return Guid.NewGuid();
    }

Next thing then in IBatisNet.DataMapper.MappedStatements.ApplyResultMap, just below the above method is called, then the following lines is being used to check if resultClass is a primitive type. However Type.GetTypeCode() with a 'Guid' type returns TypeCode.Object and therefore goes further on.

    // Check if the ResultClass is a 'primitive' Type
    if (Type.GetTypeCode(outObject.GetType()) != TypeCode.Object)


I changed the code to be 

    // Check if the ResultClass is a 'primitive' Type or a Guid
    if (Type.GetTypeCode(outObject.GetType()) != TypeCode.Object || outObject.GetType() == typeof(Guid))

This works fine for 'Guid' then. I haven't looked into if other datatypes need the same special handling as Guid 



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


[jira] Commented: (IBATISNET-25) Error applying ResultMap when using 'Guid' in resultClass

Posted by "Gilles Bayon (JIRA)" <ib...@incubator.apache.org>.
     [ http://issues.apache.org/jira/browse/IBATISNET-25?page=comments#action_59351 ]
     
Gilles Bayon commented on IBATISNET-25:
---------------------------------------

Fixed
replaced  
if (_resultClass.GetType() == typeof(Guid)) 
by
if (_resultClass == typeof (Guid))

and 
 // Check if the ResultClass is a 'primitive' Type 
    if (Type.GetTypeCode(outObject.GetType()) != TypeCode.Object) 
by
// Check if the ResultClass is a 'primitive' Type
if (TypeHandlerFactory.IsSimpleType(_statement.ResultClass))

> Error applying ResultMap when using 'Guid' in resultClass
> ---------------------------------------------------------
>
>          Key: IBATISNET-25
>          URL: http://issues.apache.org/jira/browse/IBATISNET-25
>      Project: iBatis for .NET
>         Type: Bug
>     Versions: DataMaper 1.5, DataAccess 1.5
>     Reporter: Henrik Uffe Jensen
>      Fix For: DataMapper 1.2

>
> Ran into a few other problems using 'Guid' in resultClass of a statement. 
> IBatisNet.DataMapper.Configuration.Statements.CreateInstanceOfResultClass() contains
> the lines:
>     if (_resultClass.GetType() == typeof(Guid))
>     {
> 	return Guid.NewGuid();
>     }
> but they doesn't work as expected. A 'Guid' resultClass has a System.RuntimeType as type so the Guid.NewGuid() isn't used. I instead did the following using the FullName of the resultClass and the string representation of the type.
>     if (_resultClass.FullName == typeof(Guid).ToString())
>     {
> 	return Guid.NewGuid();
>     }
> Next thing then in IBatisNet.DataMapper.MappedStatements.ApplyResultMap, just below the above method is called, then the following lines is being used to check if resultClass is a primitive type. However Type.GetTypeCode() with a 'Guid' type returns TypeCode.Object and therefore goes further on.
>     // Check if the ResultClass is a 'primitive' Type
>     if (Type.GetTypeCode(outObject.GetType()) != TypeCode.Object)
> I changed the code to be 
>     // Check if the ResultClass is a 'primitive' Type or a Guid
>     if (Type.GetTypeCode(outObject.GetType()) != TypeCode.Object || outObject.GetType() == typeof(Guid))
> This works fine for 'Guid' then. I haven't looked into if other datatypes need the same special handling as Guid 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


[jira] Closed: (IBATISNET-25) Error applying ResultMap when using 'Guid' in resultClass

Posted by "Gilles Bayon (JIRA)" <ib...@incubator.apache.org>.
     [ http://issues.apache.org/jira/browse/IBATISNET-25?page=history ]
     
Gilles Bayon closed IBATISNET-25:
---------------------------------

     Resolution: Fixed
    Fix Version: DataMapper 1.2

> Error applying ResultMap when using 'Guid' in resultClass
> ---------------------------------------------------------
>
>          Key: IBATISNET-25
>          URL: http://issues.apache.org/jira/browse/IBATISNET-25
>      Project: iBatis for .NET
>         Type: Bug
>     Versions: DataMaper 1.5, DataAccess 1.5
>     Reporter: Henrik Uffe Jensen
>      Fix For: DataMapper 1.2

>
> Ran into a few other problems using 'Guid' in resultClass of a statement. 
> IBatisNet.DataMapper.Configuration.Statements.CreateInstanceOfResultClass() contains
> the lines:
>     if (_resultClass.GetType() == typeof(Guid))
>     {
> 	return Guid.NewGuid();
>     }
> but they doesn't work as expected. A 'Guid' resultClass has a System.RuntimeType as type so the Guid.NewGuid() isn't used. I instead did the following using the FullName of the resultClass and the string representation of the type.
>     if (_resultClass.FullName == typeof(Guid).ToString())
>     {
> 	return Guid.NewGuid();
>     }
> Next thing then in IBatisNet.DataMapper.MappedStatements.ApplyResultMap, just below the above method is called, then the following lines is being used to check if resultClass is a primitive type. However Type.GetTypeCode() with a 'Guid' type returns TypeCode.Object and therefore goes further on.
>     // Check if the ResultClass is a 'primitive' Type
>     if (Type.GetTypeCode(outObject.GetType()) != TypeCode.Object)
> I changed the code to be 
>     // Check if the ResultClass is a 'primitive' Type or a Guid
>     if (Type.GetTypeCode(outObject.GetType()) != TypeCode.Object || outObject.GetType() == typeof(Guid))
> This works fine for 'Guid' then. I haven't looked into if other datatypes need the same special handling as Guid 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira