ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From devver <kmg...@googlemail.com>
Subject Re: Help with iBatis nested <iterate> syntax
Date Wed, 05 May 2010 15:58:01 GMT

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 <kmg203@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 <kmg203@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-unsubscribe@ibatis.apache.org
>>>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
>>> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
>> For additional commands, e-mail: user-java-help@ibatis.apache.org
>>
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
> For additional commands, e-mail: user-java-help@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-unsubscribe@ibatis.apache.org
For additional commands, e-mail: user-java-help@ibatis.apache.org


Mime
View raw message