[ http://issues.apache.org/jira/browse/IBATIS-131?page=comments#action_12323208 ]
Niels Beekman commented on IBATIS-131: -------------------------------------- I have built iBATIS from the source and tested my code. All works fine, except when dealing with a 'deeper' iteration, example: <iterate property="myHashMap.myList"> <isEqual property="myHashMap.myList[].someProperty" compareValue="true"> $myHashMap.myList[].anotherProperty$ </isEqual> </iterate> I get the following exception: Caused by: com.ibatis.common.beans.ProbeException: The 'myHashMap.myList' property of the java.util.HashMap class is not a List or Array. at com.ibatis.common.beans.BaseProbe.getIndexedType(BaseProbe.java:127) at com.ibatis.common.beans.GenericProbe.getPropertyTypeForGetter(GenericProbe.java:159) at com.ibatis.sqlmap.engine.mapping.sql.dynamic.elements.ConditionalTagHandler.compare(ConditionalTagHandler.java:98) at com.ibatis.sqlmap.engine.mapping.sql.dynamic.elements.IsEqualTagHandler.isCondition(IsEqualTagHandler.java:21) at com.ibatis.sqlmap.engine.mapping.sql.dynamic.elements.ConditionalTagHandler.doStartFragment(ConditionalTagHandler.java:48) at com.ibatis.sqlmap.engine.mapping.sql.dynamic.DynamicSql.processBodyChildren(DynamicSql.java:157) at com.ibatis.sqlmap.engine.mapping.sql.dynamic.DynamicSql.processBodyChildren(DynamicSql.java:160) at com.ibatis.sqlmap.engine.mapping.sql.dynamic.DynamicSql.processBodyChildren(DynamicSql.java:160) at com.ibatis.sqlmap.engine.mapping.sql.dynamic.DynamicSql.processBodyChildren(DynamicSql.java:160) at com.ibatis.sqlmap.engine.mapping.sql.dynamic.DynamicSql.processBodyChildren(DynamicSql.java:99) at com.ibatis.sqlmap.engine.mapping.sql.dynamic.DynamicSql.process(DynamicSql.java:79) at com.ibatis.sqlmap.engine.mapping.sql.dynamic.DynamicSql.getParameterMap(DynamicSql.java:61) at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:156) ... 17 more I have debugged this some more and it seems that iBATIS does not respect the dot-notation, it tries to directly get 'myHashMap.myList' from the map instead of breaking it up (ComplexBeanProbe, line 75). Hope this helps, Niels PS When building from the source using build.xml I get java.lang.NoClassDefFoundErrors about a couple of Oracle-classes, these are referenced when accessing the ToplinkDaoTransactionManager-class in the XmlDaoManagerBuilder-constructor, I had to include these Oracle-classes in the build. > Fix use of list[]-notation in propertyattributes of dynamic tags > ---------------------------------------------------------------- > > Key: IBATIS-131 > URL: http://issues.apache.org/jira/browse/IBATIS-131 > Project: iBatis for Java > Type: Bug > Components: SQL Maps > Environment: All are affected. > Reporter: Niels Beekman > Assignee: Brandon Goodin > Fix For: 2.2.0 > > When using an iterate-tag to loop a list, one cannot point to the current > element in attributes of inner tags, for example, the following fails: > <iterate property="myList"> > <isEqual property="myList[].someProperty" compareValue="true"> > $myList[].anotherProperty$ > </isEqual> > </iterate> > iBATIS tries to index the property myList with an empty string, but it should > use the current element (the []-notation works fine within inner tags), when > an index is supplied it works just fine... -- 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