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