Hi All,

 

I'm having problem with the following select statement.

 

        SELECT * FROM contexts

        <dynamic prepend="WHERE" >

            <isNotNull property="workspace_Id">

                workspace_id = #workspace_Id#

            </isNotNull>

            <isNotNull prepend="AND" property="context_Id">

                context_id = #context_Id#

            </isNotNull>

            <isNotNull prepend="AND" property="position">

                position = #position#

            </isNotNull>

            <isNull prepend="AND" property="position">

                position = 0

            </isNull>

        </dynamic>

 

The data type of property position is java.lang.Integer. My intention is: 
whenever position is not null, use "AND position = ?" and whenever position is 
null, use "AND position = 0".  However what I got in my debug log is the 
prepend AND before position never come up. 

Following is the statement generated:

When position is not null è SELECT * FROM contexts WHERE workspace_Id = ?      
position = ?

When position is null è SELECT * FROM contexts WHERE workspace_Id = ?      
position = 0

 

I was wondering what's wrong with my dynamic select statement. I'm using IBatis 
version 2.3.4.726. I tried to debug the source code and found out that when it 
is processing the <isNull> tag, it tries to get the prepend attribute of the 
<dynamic> tag.

 

Can anyone enlighten me? Any help is very much appreciated.

 

Cheers,

Winarto

 

Reply via email to