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