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