[ 
http://issues.apache.org/jira/browse/IBATIS-210?page=comments#action_12360868 ] 

Reuben Firmin commented on IBATIS-210:
--------------------------------------

Hello Clinton -- bug 224 may be related to this (and I posted my type handler 
code there if you need to refer to it.)

Here is a failing statement:

    <select id="getDeploymentByStatus2" parameterClass="list" 
resultClass="deployment" cacheModel="deployment-cache">
        SELECT * FROM Deployment
        WHERE deploymentStatusId IN (
            <dynamic>
                <iterate conjunction=", ">
                    #status.value[]#
                </iterate>
            </dynamic>
        )
        ORDER BY deploymentStatusId, deploymentId
    </select>

I traced this up into the ibatis code, and because the Enum (Deployment.Status, 
which contains a getValue() method) is passed to the statement as part of a 
list, it doesn't get mapped to my custom TypeHandler (instead it falls back to 
the UnknownTypeHandler and fails). 

To reproduce, essentially:

Declare an Enum;
Create a type handler to convert Enum <-> DB Integer;
Try passing the enum within a map or a list to a statement;


> Enum within Collection is not mapped to custom TypeHandler
> ----------------------------------------------------------
>
>          Key: IBATIS-210
>          URL: http://issues.apache.org/jira/browse/IBATIS-210
>      Project: iBatis for Java
>         Type: Bug
>   Components: SQL Maps
>     Versions: 2.1.0
>  Environment: Linux/Spring/Resin/Jdk1.5
>     Reporter: Reuben Firmin

>
> Passing an Enum to Ibatis requires the declaration of a custom TypeHandler 
> (see my comments here for my implementation: 
> http://opensource2.atlassian.com/confluence/oss/display/IBATIS/How%20do%20I%20use%20a%20Custom%20Type%20Handler%20with%20complex%20property%20or%20Type%20Safe%20Enumeration)
> This works, except when the Enum is within a map or a list.
> That is, if I pass a list of Enum attributes to a statement, as a parameter, 
> and attempt to iterate over them, they are mapped to UnknownTypeHandler. 
> Similarly, when an Enum is passed as value in a HashMap as part of a 
> parameter, it is also mapped to an UnknownTypeHandler.

-- 
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
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to