ネストされたオブジェクトを持つオブジェクトがあり、ネストされたオブジェクトのプロパティによってオブジェクトのリストを並べ替える必要があります。私がしなければならないように、私は古い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;
}
私は、これは新しいNHibernateのバージョンで可能であるかなり確信しているが、あまりにも古いもので天気をを知っているドントエラー
could not resolve property:NestedObject.Name of :MyObject
を取得します。私はHQLでこれを回避することができますが、それを避けたいと思います。
UPDATE
私はあまりにも成功しません
criteria.CreateAlias("NestedObject", "n");
criteria.AddOrder(new NHibernate.Expression.Order("n.Name", true));
を挿入しようとしました。
私のNHibernateのバージョンは1.0.2です。
スタックトレース
NHibernate.Persister.AbstractPropertyMapping.ToColumns(文字列別名、文字列プロパティ名) でNHibernate.Expression.AbstractCriterion.GetColumns(ISessionFactoryImplementor工場、タイプpersistentClass、文字列プロパティ、文字列別名、IDictionaryを時NHibernate.Impl.SessionImpl.FindでNHibernate.Loader.CriteriaLoader..ctorでNHibernate.Expression.Order.ToSqlString(ISessionFactoryImplementorのSessionFactory、タイプpersistentClass、文字列の別名) でaliasClasses) (IOuterJoinLoadableの存続、ISessionFactoryImplementor工場、CriteriaImpl基準) (クリートCでDirectLink.Persistence.Repositories.ProcessRepository.GetAllByReportingTimeIdKeyFigureTypeGroup(のInt32 reportingTimeId、文字列keyFigureTypeGroup、文字列orderCategory、ブール昇順)でNHibernate.Impl.CriteriaImpl.ListでriaImpl基準) () :\ユーザーは1月-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にあります。 (System.Web.UI.WebControls.GridView.OnSorting(GridViewSortEventArgs e) )System.Web.UI.WebControls.GridView.OnSorting(System.Web.UI.WebControls.GridView.OnSorting)で 行を表示します。Grid.WebControls.GridView.OnSorting(GridViewSortEventArgs e) (System.Web.Visual Studio 2005 \ Projects \ HRE \ DirectLink \ .UI.WebControls.GridView.HandleSort(String sortExpression、SortDirection sortDirection)System.Web.UI.WebControls.GridView.HandleEvent(System.Web.UI.WebControls)の にあるSystem.Web.UI.WebControls.GridView.HandleSort(String sortExpression)のを返します。 GridView.RaisePostBackEvent(String eventArgument) at System.Web.UI.WebControls.GridView.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl、String eventArgument)あなたが必要とするSystem.Web.UI.Page.RaisePostBackEvent System.Web.UI.Page.ProcessRequestMain(ブールincludeStagesBeforeAsyncPoint、ブールのincludeStagesAfterAsyncPoint)で(NameValueCollectionのPOSTDATA)
正確なNHibernateのバージョンと例外のスタックトレースを提供できますか?私は便利なNhibernate 1.0.2ソースを持っており、この例外はそこでは起こらないはずです。 –
更新されました。 – AGuyCalledGerald