Revision: 5911
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5911&view=rev
Author: patearl
Date: 2011-06-06 16:03:06 +0000 (Mon, 06 Jun 2011)
Log Message:
-----------
Criteria: Fixed SqlFunctionProjection for cases where arguments are not mapped 1-to-1.
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Criterion/SqlFunctionProjection.cs
Modified: trunk/nhibernate/src/NHibernate/Criterion/SqlFunctionProjection.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/SqlFunctionProjection.cs 2011-06-05 21:24:29 UTC (rev 5910)
+++ trunk/nhibernate/src/NHibernate/Criterion/SqlFunctionProjection.cs 2011-06-06 16:03:06 UTC (rev 5911)
@@ -73,26 +73,17 @@
IDictionary<string, IFilter> enabledFilters)
{
ISQLFunction sqlFunction = GetFunction(criteriaQuery);
- var tokens = new ArrayList();
- string replacemenToken = Guid.NewGuid().ToString("n");
- for (int i = 0; i < args.Length; i++)
- {
- tokens.Add(replacemenToken);
- }
- string functionStatement = sqlFunction.Render(tokens, criteriaQuery.Factory).ToString();
- string[] splitted = functionStatement.Split(new string[] {replacemenToken}, StringSplitOptions.RemoveEmptyEntries);
- SqlStringBuilder sb = new SqlStringBuilder();
- for (int i = 0; i < splitted.Length; i++)
- {
- sb.Add(splitted[i]);
- if (i < args.Length)
- {
- int loc = (position + 1) * 1000 + i;
- SqlString projectArg = GetProjectionArgument(criteriaQuery, criteria, args[i], loc, enabledFilters);
- sb.Add(projectArg);
- }
- }
+ var arguments = new ArrayList();
+ for (int i = 0; i < args.Length; i++)
+ {
+ int loc = (position + 1) * 1000 + i;
+ SqlString projectArg = GetProjectionArgument(criteriaQuery, criteria, args[i], loc, enabledFilters);
+ arguments.Add(projectArg);
+ }
+
+ SqlStringBuilder sb = new SqlStringBuilder();
+ sb.Add(sqlFunction.Render(arguments, criteriaQuery.Factory));
sb.Add(" as ");
sb.Add(GetColumnAliases(position)[0]);
return sb.ToSqlString();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|