[ 
http://issues.apache.org/jira/browse/IBATISNET-29?page=comments#action_62405 ]
     
Ron Grabowski commented on IBATISNET-29:
----------------------------------------

I still think this is an issue. IBatisNet doesn't seem to properly parse ## 
correctly:

 <select parameterClass="map" resultClass="string">
  SELECT Name FROM Band WHERE Name = '12##34$BandName$56##78'
 </select>

IbatisNet does this:

 SELECT Name FROM Band WHERE Name = '12?78'

When it should be:

 SELECT Name FROM Band WHERE Name = '12#34?56#78' 

The Java people seem to agree:

 http://tinyurl.com/3pfgk
 http://www.mail-archive.com/ibatis-user-java@incubator.apache.org/msg01718.html

Whenever I try to use the ## notation to insert a literal # in my sql 
statement, no pound signs appear in my sql statement.

My original post talked about an exception being thrown. It seems that when 
dynamic sql is used in combination with the ## syntax, an exception of somekind 
is thrown. The example below shows an ArgumentException being thrown but I've 
also seen a ProbeException thrown:

 // this will throw an exception!
 map["BandName"] = "Hello:World";

 <select parameterClass="map" resultClass="string">
  ##$BandName$##
  <isNotEmpty prepend="AND" property="BandName">
   1=1   
  </isNotEmpty>
 </select>

[ArgumentException: Requested value World was not found.]
   System.Enum.Parse(Type enumType, String value, Boolean ignoreCase) +906

Thank you for taking the time to look into this.

- Ron

> Pound signs not handled correctly when used in combination with $Foo$ syntax 
> and dynamic sql.
> ---------------------------------------------------------------------------------------------
>
>          Key: IBATISNET-29
>          URL: http://issues.apache.org/jira/browse/IBATISNET-29
>      Project: iBatis for .NET
>         Type: Bug
>     Versions: DataMapper 1.1
>  Environment: IBatisNet.DataMapper
> [assembly: AssemblyVersion("1.1.458")]
>     Reporter: Ron Grabowski
>     Assignee: Gilles Bayon

>
> When the following syntax is used:
>  ##$Foo$##
> and Foo is set via:
>  map["Foo"] = new DateTime(2005, 1, 2, 3, 4, 5);
> Ibatis seems to process the line correctly. I expect the following text to be 
> sent to the database:
>  #1/2/2005 3:04:05#
> The logs don't explicitly state that that text is being sent to the database 
> but the code seems to work correctly.
> When a dynamic sql block is used with the ##$Foo$## syntax, Ibatis 
> incorrectly throws a ProbeException because it tries to re-evaluate "1/2/2005 
> 3:04:05" as a key in the Hashtable. For example this snippet of text:
> (Concert.ConcertDate = ##$StartDate$##)
> <isNotEmpty prepend="AND" property="EndDate">
>  (Concert.ConcertDate = ##$EndDate$##)
> </isNotEmpty>
> Raises a ProbeException with the following error message: There is no Get 
> property named '1/2/2005 3' in class 'Hashtable'. The next character after 
> the 3 is a colon which Ibatis uses for inline parameters. It appears that 
> Ibatis is trying to re-evaluate what's between the dollar signs.

-- 
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
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira

Reply via email to