You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ibatis.apache.org by "Gilles Bayon (JIRA)" <ib...@incubator.apache.org> on 2006/07/06 20:10:31 UTC

[jira] Closed: (IBATISNET-166) "Composite Keys or Multiple Complex Parameters Properties" - incorrect parsing of column properties

     [ http://issues.apache.org/jira/browse/IBATISNET-166?page=all ]
     
Gilles Bayon closed IBATISNET-166:
----------------------------------

    Fix Version: DataMapper 1.5
     Resolution: Duplicate
      Assign To: Gilles Bayon

Duplicate issue with IBATISNET-141
Already fixed

> "Composite Keys or Multiple Complex Parameters Properties" - incorrect parsing of column properties
> ---------------------------------------------------------------------------------------------------
>
>          Key: IBATISNET-166
>          URL: http://issues.apache.org/jira/browse/IBATISNET-166
>      Project: iBatis for .NET
>         Type: Bug

>   Components: DataMapper
>     Versions: DataMapper 1.3
>  Environment: Microsoft Windows Server 2003, DotNetFramework 1.1
>     Reporter: cristian manea
>     Assignee: Gilles Bayon
>      Fix For: DataMapper 1.5

>
> The pdf documentation, Chapter 3, 3.5.13. Composite Keys or Multiple Complex Parameters Properties, says:
> "However, there is an alternate syntax that allows multiple columns to be passed to the related mapped statement. This comes in handy for situations where a composite key relationship exists, or even if you simply want to use a parameter of some name other than #value#. The alternate syntax for the column attribute is simply {param1=column1, param2=column2, ..., paramN=columnN}."
> Instead I found there will be ALWAYS the error: "columnN}" while getting the value from the query; i have downloaded the source and I have identified the point where the error is made: the split of the column does not consider the fact the the } and { are part of the string. 
> It will work only if we don't use the { and } when defining the column property in the sqlmap definition (but in this way, the specification for the column property is not followed). It olny works by not following the specifications :) :).      
> 	 ---  column="idlabel=desc_fk,idlanguage=id_language"  ----
> Source code in "MappedStatement.cs", project "IbatisNet.DataMapper" where I have identified the error:
>  private void SetObjectProperty(RequestScope request, ResultMap resultMap, ResultProperty mapping, ref object target, IDataReader reader) , 
> ...............................
> 				if (paramString.IndexOf(',')>0 || paramString.IndexOf('=')>0) // composite parameters key
> 				{
> 					IDictionary keyMap = new Hashtable();
> 					keys = keyMap;
> 					// define which character is seperating fields
> 					char[] splitter  = {'=',','};
> 					string[] paramTab = paramString.Split(splitter);
> 					if (paramTab.Length % 2 != 0) 
> 					{
> 						throw new DataMapperException("Invalid composite key string format in '"+mapping.PropertyName+". It must be: property1=column1,property2=column2,..."); 
> 					}
> 					IEnumerator enumerator = paramTab.GetEnumerator();
> 					while (!wasNull && enumerator.MoveNext()) 
> 					{
> 						string hashKey = ((string)enumerator.Current).Trim();
> 						enumerator.MoveNext();
> 						object hashValue = reader.GetValue( reader.GetOrdinal(((string)enumerator.Current).Trim()) );
> 						keyMap.Add(hashKey, hashValue );
> 						wasNull = (hashValue == DBNull.Value);
> 					}
> 				}
> ..................................
> Since i am not participating at the project, I cannot modify the source.
> Regards.
> Cristian Manea
> www.atypiqsoftware.ro

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