ibatis-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Manfred Klug (JIRA)" <ibatis-...@incubator.apache.org>
Subject [jira] Commented: (IBATIS-148) Capability to use dynamic sql within iterates
Date Fri, 01 Jul 2005 21:49:57 GMT
    [ http://issues.apache.org/jira/browse/IBATIS-148?page=comments#action_12314920 ] 

Manfred Klug commented on IBATIS-148:
-------------------------------------

Brandon,

a small variation of your test reveals the problem.

the java code:

  public void testIterateNestedListPropertyC() throws SQLException {
    Account account = new Account();
    account.setFirstName("Clinton");

    Account newAccount = new Account();
    newAccount.setLastName ("Jones");

    account.setAccountList(new ArrayList());
    account.getAccountList().add(newAccount);

    List list = sqlMap.queryForList("iterateNestedListPropertyC", account);
//    assertAccount1((Account) list.get(0));
//    assertEquals(3, list.size());
  }

the mapped statement code:

  <select id="iterateNestedListPropertyC"
    parameterClass="testdomain.Account"
    resultClass="testdomain.Account">
    select
      ACC_ID          as id,
      ACC_FIRST_NAME  as firstName,
      ACC_LAST_NAME   as lastName,
      ACC_EMAIL       as emailAddress
    from ACCOUNT
    <iterate open="WHERE" close="" conjunction="OR" property="accountList">
        ACC_LAST_NAME = #accountList[].lastName#
        <isNotEqual prepend="OR" compareProperty="firstName" compareValue="test">
          ACC_FIRST_NAME = #firstName#
        </isNotEqual>
    </iterate>
  </select>

the final sql statement is:

     select ACC_ID as id, ACC_FIRST_NAME as firstName, ACC_LAST_NAME as lastName, ACC_EMAIL
as emailAddress from ACCOUNT WHERE ACC_LAST_NAME = ? OR ACC_FIRST_NAME = ?

the passed in parameters are:

[0] = Clinton
[1] = Jones

and this is the problem. The correct parameters should be:

[0] = Jones
[1] = Clinton


> Capability to use dynamic sql within iterates
> ---------------------------------------------
>
>          Key: IBATIS-148
>          URL: http://issues.apache.org/jira/browse/IBATIS-148
>      Project: iBatis for Java
>         Type: Improvement
>   Components: SQL Maps
>     Versions: 2.0.9b, 2.1.0
>     Reporter: Sam Abeyratne
>     Assignee: Brandon Goodin

>
> I am getting the following error when I try to run a simple query that has a dynamic
<isNotEqual> within an iterate tag. Per Brandon, this is  a known issue that needs to
be fixed.
> Thanks!
> Sam 
> 2005-06-06 17:11:25,284 [HttpRequestHandler-2083] DEBUG xxxDAO.class - Parameters: {sidList=[abc1,
abc2], carrier=ABCDE1, interfaceType=DSP}
> 2005-06-06 17:11:25,284 [HttpRequestHandler-2083] DEBUG xxxDAO.class - Calling queryForList
with statementName: queryInterfaceErrorCount and parameters: {sidList=[abc1, abc2], carrier=
ABCDE1, interfaceType=DSP}
> 2005-06-06 17:11:25,294 [HttpRequestHandler-2083] ERROR xxxDispatchAction.class - Entered
catch block in viewErrorLog: Exception in queryInterfaceErrorCount: 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: ""
> The sqlmap looks something like:
>     <select id="queryInterfaceErrorCount" parameterClass="java.util.Map" resultMap="interface_error_count_result"
cacheModel="interface_error_count_cache">
>     select sum(count) as count
>     from 
>     ( 
>       <iterate property="sidList" open="(" close=")" conjunction="UNION ALL">
>         select count(*) as count
>           from mim_error_log@$sidList[]$
>         where interface_type = #interfaceType# 
>         <isNotEqual prepend="and" property="carrier" compareValue="All">  
>           carrier_name = #carrier#  
>         </isNotEqual>
>       </iterate>
>     )
>   </select>
>  
> Java bean looks like: 
> public class InterfaceErrorCount  {
>   private int count;
>   public int getCount() {
>     return count;
>   }
>   public void setCount(int count)  {
>     this.count = count;
>   }
> }

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message