[
https://issues.apache.org/jira/browse/IBATIS-265?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12485638
]
Utkarsh commented on IBATIS-265:
--------------------------------
I would agree with Stefan. I think what Stefan was trying to say was
misunderstood. I am trying to implement something similar to what he is saying.
example
<resultMap id="parentResultMap" class="java.util.HashMap">
<result column="property_1" property="property1" />
<result column="property_2" property="property2" />
<result column="property_1" property="keyToChildHashMap"
select="namespace.loadChild"/>
</resultMap>
<select id="loadParent" resultMap="parentResultMap">
select property_1, propert_2 from parent
</select>
<resultMap id="childResultMap" class="java.util.HashMap">
<result column="child_property_1" property="childProperty1" />
<result column="child_property_2" property="childProperty2" />
</resultMap>
<select id="loadChild" resultMap="childResultMap">
select child_property_1, child_property_2 from child where
child.property_1 = #property1#
</select>
I can see why he is requesting this to be re-opened as at this point, if the
resultClass i.e say HashMap is assignable to a Map then it would treat it like
and object and you cannot treat it like a List of HashMaps
Could you please re-open this.
Thanks
Utkarsh
> Map data into HashMaps: HashMap of List of HashMaps
> ---------------------------------------------------
>
> Key: IBATIS-265
> URL: https://issues.apache.org/jira/browse/IBATIS-265
> Project: iBatis for Java
> Issue Type: Improvement
> Reporter: Stefan Friedrich
> Assigned To: Sven Boden
> Priority: Minor
>
> We tried to implement the HashMaps as results for our queries. The problem
> is, that whenever a HashMap is set as the resultClass, a queryForObject is
> called and so, every select can only return ONE result. In our application we
> expect a list of HashMaps at certain locations. The solution for our problem
> would be very simple and - in our opinion - would work with only three new
> lines of code:
> The Method BasicResultMap.getResults(RequestScope request, ResultSet rs) the
> targetType for further calls is set:
> if (resultClass == null) {
> throw new SqlMapException("The result class was null when trying to get
> results for ResultMap named " + getId() + ".");
> } else if (Map.class.isAssignableFrom(resultClass)) {
> columnValues[i] = getNestedSelectMappingValue(request, rs, mapping,
> Object.class);
> } else if (DomTypeMarker.class.isAssignableFrom(resultClass)) {
> Class javaType = mapping.getJavaType();
> if (javaType == null) {
> javaType = DomTypeMarker.class;
> }
> columnValues[i] = getNestedSelectMappingValue(request, rs, mapping,
> javaType);
> } else {
> Probe p = ProbeFactory.getProbe(resultClass);
> Class type = p.getPropertyTypeForSetter(resultClass,
> mapping.getPropertyName());
> columnValues[i] = getNestedSelectMappingValue(request, rs, mapping,
> type);
> }
> The part that needs to be changed is in the first "else-Statement".
> if (resultClass == null) {
> throw new SqlMapException("The result class was null when trying to get
> results for ResultMap named " + getId() + ".");
> } else if (Map.class.isAssignableFrom(resultClass)) {
> Class javaType = mapping.getJavaType();
> if (javaType == null) {
> javaType = Object.class;
> }
> columnValues[i] = getNestedSelectMappingValue(request, rs, mapping,
> javaType);
> } else if (DomTypeMarker.class.isAssignableFrom(resultClass)) {
> Class javaType = mapping.getJavaType();
> if (javaType == null) {
> javaType = DomTypeMarker.class;
> }
> columnValues[i] = getNestedSelectMappingValue(request, rs, mapping,
> javaType);
> } else {
> Probe p = ProbeFactory.getProbe(resultClass);
> Class type = p.getPropertyTypeForSetter(resultClass,
> mapping.getPropertyName());
> columnValues[i] = getNestedSelectMappingValue(request, rs, mapping,
> type);
> }
> As you can see, the changes would have no effect, if no javaType was set. But
> for our concerns, we would set the javaType to java.util.ArrayList and
> everything would be just fine!
> Stefan
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.