Да, это возможно ... Однако, вы не думаете, что это будет иметь некоторые последствия для производительности? Возможно, вы извлекаете огромное количество данных.
для этого вам нужно будет использовать метод SetFetchMode из ICriteria, который вы будете использовать для извлечения экземпляров.
Примерно так:
ICriteria crit = session.CreateCriteria (typeof(Category));
crit.SetFetchMode ("SubCategories", FetchMode.Eager);
Или, может быть, с помощью CreateAlias:
ICriteria crit = session.CreateCriteria (typeof(Category));
crit.CreateAlias ("SubCategories", "sc", JoinType.LeftOuterJoin);
crit.CreateAlias ("sc.Products", "p", JoinType.InnerJoin);
возможно, вам придется немного поиграть с возможными типами JoinTypes, в зависимости от вашей ситуации / того, что вы хотите.