OK. Nested iterates work in iBATIS 2.2.0 or later.
"ReportParameters" is not really a proper Java property name - you might try "reportParameters". Maybe thats the problem? Jeff Butler On Wed, May 5, 2010 at 10:58 AM, devver <kmg...@googlemail.com> wrote: > > Hi > > It's not clear from my examples but ReportParameters is the actual name of a > property in the HashMap passed to iBatis (it's used throughout the > application I'm amending). > > i.e. I pass a HashMap called, say, MyHashMap to iBatis; within this is a > property called ReportParameters. This in turn contains an array property > called 'outerArray' whcih is comprised of several properties, one of which > is another array, 'innerArray'. > > My guess is that the ReportParameters.outerArray[].innerArray and > #ReportParameters.outerArray[].innerArray[].someProperty# syntax should have > worked as you suggest but it seems to have severe problems with accessing > one of the arrays. It's almost as if it doesn#'t find an array but finds an > instance of 'something else' instead. > > I'm wondering whether there's an issue with the version of iBatis this > particular app. uses? I'm wondering whether the nested <iterate> technique > require a specific level or patch? > > > Jeff Butler-2 wrote: >> >> I think your issue relates to a misunderstanding about the "property" >> attribute. I see that you have added "ReportParameters" at the front >> of all your property references. My guess is that you don't need >> that. iBATIS would expect "ReportParameters" to be a property of your >> parameter object - and I'm guessing that "ReportParameters" IS your >> parameter object. So, remove "ReportParameters" and things will >> likely improve. >> >> Jeff Butler >> >> On Wed, May 5, 2010 at 8:42 AM, devver <kmg...@googlemail.com> wrote: >>> >>> Thanks for your reply Jeff >>> >>> I am using something very similar (See below) but I am getting a host of >>> error messages, including: >>> >>> --- Cause: com.ibatis.common.beans.ProbeException: Error getting ordinal >>> list from JavaBean. Cause java.lang.NumberFormatException: For input >>> string: >>> "" >>> Caused by: java.lang.NumberFormatException: For input string: ""; nested >>> exception is com.ibatis.common.jdbc.exception.NestedSQLException: >>> >>> followed by: >>> >>> com.ibatis.common.beans.ProbeException: Error getting ordinal list from >>> JavaBean. Cause java.lang.NumberFormatException: For input string: "" >>> >>> These are repeated several times. >>> >>> I pass a HashMap into the SQLMap. One of the instances is a >>> ReportParameters >>> instance. This is comprised of several properties but the important one >>> as >>> far as my SQL is concerned is an array of objects which themselves >>> contain >>> an array. >>> >>> My SQLMap dynanically builds a WHERE clause based on the ReportParameters >>> 'outer' and 'inner' arrays. The <dynamic> block looks similar to this: >>> >>> <iterate prepend="AND" property="ReportParameters.outerArray" >>> conjunction="OR" open="(" close=")"> >>> ( >>> #ReportParameters.outerArray[].someProperty# >>> ... >>> >>> ) >>> <iterate prepend="AND" >>> property="ReportParameters.outerArray[].innerArray" >>> conjunction="AND" open="(" close=")"> >>> ( >>> >>> #ReportParameters.outerArray[].innerArray[].anotherProperty# >>> ) >>> </iterate> >>> ) >>> </iterate> >>> >>> I'm not sure why this is happening at all. The syntax looks >>> straight-forward >>> and intuitive and yet it (or something) appears to crash iBatis. >>> I have dumped the contents of ReportParameters just before I execute the >>> SQL >>> via my DAO. Everything looks as expected. >>> >>> The version of iBatis I am using is v2. The app uses ibatis-common-2.jar >>> and >>> ibatis-sqlmap-2.jar >>> >>> Jeff Butler-2 wrote: >>>> >>>> Assuming MyParameters is some object passed as a parameter object, and >>>> that myOuterList is a property of MyParameters: >>>> >>>> <iterate property="myOuterList" ...> >>>> <iterate property="myOuterList[].myInnerList"...> >>>> #myOuterList[].myInnerList[].myProperty# >>>> </iterate> >>>> </iterate> >>>> >>>> >>>> Jeff Butler >>>> >>>> >>>> On Tue, May 4, 2010 at 2:09 PM, devver <kmg...@googlemail.com> wrote: >>>>> >>>>> Hi >>>>> >>>>> #Subsequent to the problems outline in this post: >>>>> http://old.nabble.com/Problem-accessing-List-instance-property-via-%3Cisnull%3E-td28368852.html >>>>> >>>>> ... the problem has changed somewhat. The orignal SQL statement has >>>>> been >>>>> altered and we now have a structure which requries nested <iterate> >>>>> elements. >>>>> >>>>> It looks like patches may have been introduced into IbAtis 2.x around >>>>> 2006 >>>>> to enable this feature but I can't get it to work. Can someone please >>>>> confirm the correct syntax? I had used somethign similar to this: >>>>> >>>>> <iterate property="MyParameters.myOuterList" conjunction="OR" open="(" >>>>> close=")"> >>>>> <!-- Some SQL --> >>>>> >>>>> <iterate proeprty ="MyParameters.myOuterList[].myInnerList" >>>>> conjunction="AND" open="(" close=")"> >>>>> >>>>> <!-- More SQL where I access >>>>> #MyParameters.myOuterList.myInnerList[].myProperty# --> >>>>> >>>>> </iterate> >>>>> >>>>> </iterate> >>>>> >>>>> Any help gratefully received. Thanks >>>>> -- >>>>> View this message in context: >>>>> http://old.nabble.com/Help-with-iBatis-nested-%3Citerate%3E-syntax-tp28451833p28451833.html >>>>> Sent from the iBATIS - User - Java mailing list archive at Nabble.com. >>>>> >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org >>>>> For additional commands, e-mail: user-java-h...@ibatis.apache.org >>>>> >>>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org >>>> For additional commands, e-mail: user-java-h...@ibatis.apache.org >>>> >>>> >>>> >>> >>> -- >>> View this message in context: >>> http://old.nabble.com/Help-with-iBatis-nested-%3Citerate%3E-syntax-tp28451833p28461065.html >>> Sent from the iBATIS - User - Java mailing list archive at Nabble.com. >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org >>> For additional commands, e-mail: user-java-h...@ibatis.apache.org >>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org >> For additional commands, e-mail: user-java-h...@ibatis.apache.org >> >> >> > > -- > View this message in context: > http://old.nabble.com/Help-with-iBatis-nested-%3Citerate%3E-syntax-tp28451833p28462710.html > Sent from the iBATIS - User - Java mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org > For additional commands, e-mail: user-java-h...@ibatis.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: user-java-unsubscr...@ibatis.apache.org For additional commands, e-mail: user-java-h...@ibatis.apache.org