No, the use of $’s is required because it is begin used to specify columns and tables in the SELECT-clause. #’s would pass the columns as a parameter for the prepared statements, this would cause an SQLException.

 

This is definitely related to the iterate-tag, I believe some rework is done to this part of iBATIS by Jeff Butler, do not know the details about this.

 

Niels

 


From: Olaf Bey [mailto:[EMAIL PROTECTED]
Sent: maandag 8 mei 2006 16:01
To: user-java@ibatis.apache.org
Subject: Re: nested iterate over 2 different properties

 

Hello Guido,

shouldn't it be #agrupaciones[]# instead of $agrupaciones[]# ?

Greetings,

Olaf

On 5/8/06, Guido García Bernardo <[EMAIL PROTECTED]> wrote:

Hello,

I am using ibatis 2.1.7, and I have the following sql statement:

<statement ...>
    <iterate property="tabla" conjunction="UNION">
    SELECT      
        <iterate property="agrupaciones" conjunction=",">
            TABLA.$agrupaciones[]$
        </iterate>
    FROM $tabla[]$ TABLA
    WHERE
        TABLA.A IN ('A','B','C','D','W','G')
    </iterate>
</statement>

where:
    $tabla[]$ = { "PENDIENTES", "ANULADAS" }
    $agrupaciones[]$ = { "AREA" }

but the generated sentence is:

    SELECT
        TABLA.AREA
    FROM PENDIENTES TABLA
    WHERE
        TABLA.A IN ('A','B','C','D','W','G')   
    UNION
    SELECT
    FROM ANULADAS TABLA WHERE
        TABLA.A IN ('A','B','C','D','W','G')

instead of:

    SELECT
        TABLA.AREA
    FROM PENDIENTES TABLA
    WHERE
        TABLA.A IN ('A','B','C','D','W','G')    
    UNION   
    SELECT
       
TABLA.AREA
    FROM ANULADAS TABLA
    WHERE
        TABLA.A IN ('A','B','C','D','W','G')   

It seems not to be using the correct index for the property "agrupaciones" in the second iteration of the property "tabla"... I think this is a bug (maybe related to http://issues.apache.org/jira/browse/IBATIS-281)

Is there any idea or workaround to solve it?

Thank you very much,
Guido García Bernardo

 

Reply via email to