Упорядочить список объектов по свойству вложенного объекта с NHibernate 1 - PullRequest
0 голосов
/ 23 января 2012

У меня есть объект с вложенным объектом, и я хочу упорядочить список объектов по свойству вложенного объекта.Как я должен, я использую старую версию NHibernate (1.0 или что-то).

public class MyObject
{
  public NestedObject
  { Get; Set; }
}

public class NestedObject
{
  public string Name
  { Get; Set; }
}

public List<MyObject> GetOrderedByNameOfNestedObject()
    {
        ISession session = SessionProvider.GetCurrentSession();

        List<MyObject> objects = new List<MyObject>();

        ICriteria criteria = session.CreateCriteria(typeof(MyObject));

        criteria.AddOrder(new NHibernate.Expression.Order("NestedObject.Name", true));

        ..

        return objects;
    }

Я получаю ошибку

could not resolve property:NestedObject.Name of :MyObject

Я почти уверен, что это возможно в более новых версиях NHibernateно в старых тоже не знаю.Я могу обойти это с помощью HQL, но хотел бы избежать этого.

ОБНОВЛЕНИЕ

Я тоже пытался вставить

criteria.CreateAlias("NestedObject", "n");
criteria.AddOrder(new NHibernate.Expression.Order("n.Name", true));

, но безуспешно.

Моя версия NHibernate - 1.0.2.

Трассировка стека

в NHibernate.Persister.AbstractPropertyMapping.ToColumns (псевдоним строки, свойство StringName)в NHibernate.Expression.ctor (IOuterJoinLoadable persister, фабрика ISessionFactoryImplementor, критерии CriteriaImpl) в NHibernate.Impl.SessionImpl.Find (критерии CriteriaImpl) в NHibernate.Impl.CriteriaImpl.List () в объекте DirectLink.Persistence.RellyGestFireIventGroup.ReTimeFortingGroup.ReposityGroup.ReposityGest.Group.ReposityGest.GroupureTypeGroup, String orderCategory, логическое возрастание) в C: \ Users \ jan-frederik.carl \ Documents \ Visual Studio 2005 \ Projects \ HRE \ DirectLink \ Persistence \ Repositories \ ProcessRepository.cs: строка 62 в DirectLink.Applications.Summit.Summit_Interface2.EntriesGrid_Sorting (Отправитель объекта, GridViewSortEventArgs e) в C: \ Users \ jan-frederik.carl \ Documents \ Visual Studio 2005 \ Projects \ HRE \ DirectLink \ DirectLink_Web \ Applications \ Summit \ Summit_Interface2.aspx.cs: строка 131 в системе.Web.UI.WebControls.GridView.OnSorting (GridViewSortEventArgs e) в System.Web.UI.WebControls.GridView.HandleSort (String sortExpression, SortDirection sortDirection) в System.Web.UI.WebControls.GridView.HandleSortring.Web.UI.WebControls.GridView.HandleEvent (EventArgs e, Boolean argumentsValidation, String validationGroup) в System.Web.UI.WebControls.GridView.RaisePostBackEvent (String eventArgument) в System.Web.UI.WebControls.GridS..UI.IPostBackEventHandler.RaisePostBackEvent (Строковое событиеАргумент) в System.Web.UI.Page.RaisePostBackEvent (IPostBackEventHandler sourceControl, String eventArgument) в System.Web.UI.Page.RaisePostBackEvent (NameValueCollection postData) в System.Web.UI.Page.ProcessReleAsantainSignSignSense ().

1 Ответ

0 голосов
/ 23 января 2012

Вам нужно использовать CreateAlias для доступа к ассоциациям.

Документы не могут повредить.

...