We don't only want to have a List of HashMaps....as described in the
topic:

A HashMap of Lists of HashMaps NOT A List of HashMaps!!!!

The queryForList is well known....

Please reopen!

Stefan Friedrich

-----------------------------

    Resolution: Invalid
     Assign To: Sven Boden

Use a HashMap as resultClass and use queryForList()... you will get a
list of HashMaps. No changes are required as it's already supported.


> 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