我有一個嵌套對象的對象,並希望通過嵌套對象的屬性排序對象的列表。正如我必須的,我使用舊的NHibernate版本(1.0或以上)。通過NHibernate的嵌套對象的屬性排序對象的列表1
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解決這個問題,但想避免它。
UPDATE
我也試圖插入
criteria.CreateAlias("NestedObject", "n");
criteria.AddOrder(new NHibernate.Expression.Order("n.Name", true));
沒有成功。
我的NHibernate版本是1.0.2。
堆棧跟蹤
在NHibernate.Persister.AbstractPropertyMapping.ToColumns(字符串別名,字符串propertyName的) 在NHibernate.Expression.AbstractCriterion.GetColumns(ISessionFactoryImplementor工廠,對PersistentClass類型,String屬性,字符串別名,IDictionary的aliasClasses) 在NHibernate.Expression.Order.ToSqlString(ISessionFactoryImplementor的sessionFactory,對PersistentClass型,字符串別名) 在NHibernate.Loader.CriteriaLoader..ctor(IOuterJoinLoadable持留,ISessionFactoryImplementor工廠,CriteriaImpl條件) 在NHibernate.Impl.SessionImpl.Find (Crite在C:\ Users \ jan-frederik.carl \中的DirectLink.Persistence.Repositories.ProcessRepository.GetAllByReportingTimeIdKeyFigureTypeGroup(Int32 reportingTimeId,String keyFigureTypeGroup,String orderCategory,布爾升序)NHibernate.Impl.CriteriaImpl.List() Documents \ Visual Studio 2005 \ Projects \ HRE \ DirectLink \ Persistence \ Repositories \ ProcessRepository.cs:第62行 位於C:\ Users \ jan-frederik中的DirectLink.Applications.Summit.Summit_Interface2.EntriesGrid_Sorting(Object sender,GridViewSortEventArgs e)。 carl \ Documents \ Visual Studio 2005 \ Projects \ HRE \ DirectLink \ DirectLink_Web \ Applications \ Summit \ Summit_Interface2.aspx.cs:line 131 at System.Web.UI.WebControls.GridView.OnSorting(GridViewSortEventArgs e) at System.Web .UI.WebControls.GridView.HandleSort(String sortExpression,SortDirection sortDirection) at System.Web.UI.WebControls.GridView.HandleSort(String sortExpression) at System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e,Boolean causesValidation,String validationGroup) at System.Web.UI.WebControls。在System.Web.UI.WebControls.GridView.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) 在System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument) 在System.Web.UI.Page.RaisePostBackEvent(NameValueCollection中POSTDATA) 在System.Web.UI.Page.ProcessRequestMain(布爾includeStagesBeforeAsyncPoint,布爾includeStagesAfterAsyncPoint)
你能否提供確切的NHibernate版本和異常的堆棧跟蹤?我有Nhibernate 1.0.2源代碼,似乎這個異常不應該發生在那裏。 –
剛剛更新,Gert。 – AGuyCalledGerald