the only way i've been able to do this is with inline IQuery objects:
Code:
public IList GetAssignedTasks(Member assignee, string orderByField)
{
StringBuilder query = new StringBuilder();
query.Append("from MemberTask as mt where mt.Member = :member and mt.DateCompleted is null order by ");
if (orderByField != null)
{
query.Append(String.Format("mt.Task.{0} asc", orderByField));
}
else
{
// default
query.Append("mt.Task.DateDue asc");
}
return this.dbSession.CreateQuery(query.ToString())
.SetEntity("member", assignee)
.List();
}
although I've wondered if you could do something like:
Code:
session.GetNamedQuery("namedQuery")
.QueryString.Concat("order by :param")
.SetParamater("param", param)
.List();
seems like a hack, but i was looking for a way to get the benefit of keeping the main part of the query in the mapping file...