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

Stefan Friedrich commented on IBATIS-265:
-----------------------------------------

Please reopen this issue, as what we want to have is a HashMap of Lists of 
HashMaps AND NOT a simple List of HashMaps! In this case the queryForList() is 
extremly not the thing we need.... By the way...the queryForList - Method is 
not a secret for us...

> Map data into HashMaps: HashMap of List of HashMaps
> ---------------------------------------------------
>
>          Key: IBATIS-265
>          URL: http://issues.apache.org/jira/browse/IBATIS-265
>      Project: iBatis for Java
>         Type: Improvement
>     Reporter: Stefan Friedrich
>     Assignee: 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.
-
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