ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeff Butler <jeffgbut...@gmail.com>
Subject Re: Help with iBatis nested <iterate> syntax
Date Wed, 05 May 2010 16:02:43 GMT
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 <kmg203@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 <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
>
>

---------------------------------------------------------------------
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