My ultimate goal is: to group my query by month. Month is extracted
from property Client.ObjectCreateDate using registered sql function
"month". The HQL counterpart works fine, but i need to write this
with ICriteria API.
My exact question and problem is this: why the below query does not
generate SQL statement with correct alias? That is, the resulted alias
is 'y0_' even though i specify a different one.
This is the resulted SQL:
SELECT extract(month from this_.OBJECT_CREATE_DATE) as y0_ FROM
CLIENTS this_
This is the Criteria query that generates it:
DetachedCriteria.For(typeof(RisingOrder))
.SetProjection(Projections.ProjectionList()
.Add(Projections.SqlFunction("month",
NHibernateUtil.Int32, Property.ForName("ObjectCreateDate")),
"mmonth"))
.GetExecutableCriteria(session)
.List();
Looking at NHibernate source code (which is tricky, at least with how
aliases are processed), i found that for example in Order.cs:58,
columns aliases are retrieved by accessing ICriteriaQuery, that is :
string[] columns = criteriaQuery.GetColumnAliasesUsingProjection
(criteria, propertyName);
However, in SqlFunctionProjection.cs:96, aliases are retrieved by
calling base function like this:
sb.Add(GetColumnAliases(position)[0]);
Should not it be something similar like
sb.Add(criteriaQuery.GetColumnAliasesUsingProjection(criteria,
someProperty));
or
sb.Add(args[0].Aliases);
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---