我們升級到NHibernate 2.1後出現這個錯誤。錯誤:當調用Configuration.BuildSessionFactory()時,「不能同時獲取多個行李」;
[QueryException: Cannot simultaneously fetch multiple bags.]
NHibernate.Loader.BasicLoader.PostInstantiate() +418
NHibernate.Loader.Entity.EntityLoader..ctor(IOuterJoinLoadable persister, String[] uniqueKey, IType uniqueKeyType, Int32 batchSize, LockMode lockMode, ISessionFactoryImplementor factory, IDictionary`2 enabledFilters) +123
NHibernate.Loader.Entity.BatchingEntityLoader.CreateBatchingEntityLoader(IOuterJoinLoadable persister, Int32 maxBatchSize, LockMode lockMode, ISessionFactoryImplementor factory, IDictionary`2 enabledFilters) +263
NHibernate.Persister.Entity.AbstractEntityPersister.CreateEntityLoader(LockMode lockMode, IDictionary`2 enabledFilters) +26
NHibernate.Persister.Entity.AbstractEntityPersister.CreateLoaders() +57
NHibernate.Persister.Entity.AbstractEntityPersister.PostInstantiate() +1244
NHibernate.Persister.Entity.SingleTableEntityPersister.PostInstantiate() +18
NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, IMapping mapping, Settings settings, EventListeners listeners) +3261
NHibernate.Cfg.Configuration.BuildSessionFactory() +87
沒有進入NHibernate源代碼,它看起來不像我能看到哪個映射造成了問題。
這是一個非常古老的應用程序,負載映射文件,很多映射在其中都有一對多的包,都是懶惰的實例化的。
例如:
<bag name="Ownership" lazy="true" cascade="all" inverse="true" outer-join="auto" where="fkOwnershipStatusID!=6">
<key column="fkStakeHolderID"/>
<one-to-many class="StakeholderLib.Ownership,StakeholderLib" />
</bag>
映射到:
public virtual IList Ownership {
get {
if (ownership == null)
ownership = new ArrayList();
return ownership;
}
set { ownership = value; }
}
有沒有人見過升級到NHibernate的2.1之前的時候這個錯誤?
在'按代碼映射'中,我們有兩個'bag',其中一個提取類型爲JOIN。感謝您指點我正確的方向! – ps2goat 2014-11-07 19:58:39
很開心一些隨機的東西,我在網上說過幫了一些人:) – 2014-11-25 09:44:45
ps2goat,你是如何解決抓取類型JOIN問題的?我們有一個存儲庫調用,它可以即時構建標準,不幸的是,它在多對多的包上使用JOIN提取。 – neoscribe 2015-06-23 01:48:29