[ http://issues.apache.org/jira/browse/IBATIS-45?page=history ]
     
Clinton Begin closed IBATIS-45:
-------------------------------

      Assign To: Clinton Begin
     Resolution: Fixed
    Fix Version: 2.1.0


Eliminated JavaBeanProbe and MapProbe.  ComplexBeanProbe now handles all types 
except DOM.

> ProbeExceptions with complex beans
> ----------------------------------
>
>          Key: IBATIS-45
>          URL: http://issues.apache.org/jira/browse/IBATIS-45
>      Project: iBatis for Java
>         Type: Bug
>   Components: SQL Maps
>     Versions: 2.0.8, 2.0.9
>  Environment: XP Pro; jdk 1.4.2
>     Reporter: S Boyd
>     Assignee: Clinton Begin
>      Fix For: 2.1.0

>
> When I create a resultMap that uses a complex bean that contains an
> associated Map, a ProbeException is thrown in two places when I 
> attempt to populate the map from the resultset using object
> graph navigation.
> For example:
> public class Account{
>    String id;
>    Map demographics;
>    // setters/getters left out
> }
> <resultMap id="accountResult" class="Account">
>  <result property="id"                   column="id"                        />
>  <result property="demographics.address" column="address" javaType="string" />
>  <result property="demographics.city"    column="city"    javaType="string" />
>  <result property="demographics.state"   column="state"                     />
> </resultMap>
> The two places that ibatis will fail is during the sqlmap parsing phase where 
> it uses introspection on the result properties _if_ the javaType is not 
> specified.  So in the resultMap above, "demographics.state" will generate a 
> ProbeException because ibatis cannot determine what type "state" is.  Of 
> course, it is not known until runtime because the value is stored in the Map 
> "demographics".  Instead of a ProbeException, I think it should assign to the 
> property the UnknownTypeHandler or something similar.  For now, the current 
> workaround would be to include the javaType attribute.  
> Now, the second and more important place where the ProbeException is thrown 
> is during the population of the object after the query is executed.  Since 
> the parent class is a java bean, the GenericProbe.setObject() method uses the 
> JavaBeanProbe.setObject() which tries to force "demographics" to have a 
> g/setter methods for all three properties instead of just using Map.get() and 
> Map.set().  Now, if the ComplexBeanProbe.setObject() is used, then everything 
> works as expected.
> Thanks,
> Stephen

-- 
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

Reply via email to