我有一个社交网站的标准查询。 Person对象具有Friends(也是人物对象)的集合。查询抓取前N个朋友,但我也想要加载关联的对象MainProfileImage,然后加载后续的关联对象MediumThumbnail。NHibernate的Lambda扩展 - 渴望加载一个集合的assosciations
我可以在HQL做到这一点很容易:
select friends from Person person inner join person.Friends friends inner join fetch friends.MainProfileImage image inner join fetch image.MediumThumbnail where person = :person1 order by friends.LatestLogin desc
这里是我的标准努力。出于某种原因,这不会返回任何东西!
public static IList<Person> GetFriends(Person person, int count)
{
Person personAlias = null;
Person friendAlias = null;
ICriteria criteria = NHibernateSessionManager.Instance.GetSession()
.CreateCriteria(typeof (Person),() => personAlias)
.CreateCriteria(() => personAlias.Friends,() => friendAlias, JoinType.LeftOuterJoin)
.CreateCriteria(() => friendAlias.MainProfileImage, JoinType.InnerJoin)
.CreateCriteria(() => friendAlias.MainProfileImage.MediumThumbnail, JoinType.InnerJoin)
.AddOrder(() => personAlias.LatestLogin, Order.Desc)
.Add<Person>(p => p.ID == person.ID)
.SetMaxResults(count);
return criteria.List<Person>();
}
为什么不直接离开HQL呢? – 2009-11-11 23:55:49