NHibernate-具有急切加载的问题

NHibernate-具有急切加载的问题,nhibernate,hql,Nhibernate,Hql,我有一个包含许多ClassB元素的ClassA: public abstract class ClassA: IEntity<ClassA> { public virtual IList<ClassB> ClassBList { get; protected set; } ... } 下面是ClassA的映射(ClassB没有映射): 当我从数据库中获取所有classA元素时,它会加载ClassB列表中的所有ClassB,但不会加载ClassB中的Cl

我有一个包含许多ClassB元素的ClassA:

public abstract class ClassA: IEntity<ClassA>
{
    public virtual IList<ClassB> ClassBList { get; protected set; }
     ...
}
下面是ClassA的映射(ClassB没有映射):

当我从数据库中获取所有classA元素时,它会加载ClassB列表中的所有ClassB,但不会加载ClassB中的ClassC元素

我尝试了以下HQL:

                var query = session.CreateQuery("select a from ClassA as a left join fetch  a.ClassBList as b left join fetch b.CEntity as c");

            classAList = query.List<ClassA>();
var query=session.CreateQuery(“从类a中选择a作为左连接获取a.ClassBList作为b左连接获取b.CEntity作为c”);
classAList=query.List();
但我得到了这个错误:

Exception={”查询指定了联接获取,但获取的关联的所有者不在选择列表中[FromElement{explicit,非集合联接,获取联接,获取非惰性属性,classAlias=c,role=,tableName=ClassCTable,tableAlias=classc2\或

我认为发生这种情况是因为我试图急切地加载classB的ClassC元素,但classB不在选择列表中

替代方案或正确的HQL是什么


注意:我无法使用标准,因为存在问题:

如果问题是通过一个复杂的关联(跨越3个实体)进行加载,可能博客文章会有所帮助

        HasMany(a => a.ClassBList).Component(a =>
        {
            a.References(b => b.CEntity , "IDCEntity").ForeignKey("ID").Cascade.SaveUpdate().Not.LazyLoad();
            t.Map(b => b.Percentage, "Percentage");
            ...;
        }).AsBag().Cascade.AllDeleteOrphan().Not.LazyLoad()
                var query = session.CreateQuery("select a from ClassA as a left join fetch  a.ClassBList as b left join fetch b.CEntity as c");

            classAList = query.List<ClassA>();