NHibernate-具有急切加载的问题
我有一个包含许多ClassB元素的ClassA: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
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>();