NHibernate を 2.xx から 3.3 にアップグレードしました。うまく機能しますが、いくつかの使用法があります
SetResultTransformer(new DistinctRootEntityResultTransformer())
そして今、実行時に「インデックスが配列の境界外でした」という例外が発生します
.List<Entity>()
スタック トレースは、エラーの原因を示しています。
at NHibernate.Type.TypeHelper.Disassemble(Object[] row, ICacheAssembler[] types, Boolean[] nonCacheable, ISessionImplementor session, Object owner)
at NHibernate.Cache.StandardQueryCache.Put(QueryKey key, ICacheAssembler[] returnTypes, IList result, Boolean isNaturalKeyLookup, ISessionImplementor session)
at NHibernate.Loader.Loader.PutResultInQueryCache(ISessionImplementor session, QueryParameters queryParameters, IType[] resultTypes, IQueryCache queryCache, QueryKey key, IList result)
at NHibernate.Loader.Loader.ListUsingQueryCache(ISessionImplementor session, QueryParameters queryParameters, ISet
1 querySpaces, IType[] resultTypes)
at NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet
1 querySpaces, IType[] resultTypes)
at NHibernate.Loader.Criteria.CriteriaLoader.List(ISessionImplementor session)
at NHibernate.Impl.SessionImpl.List(CriteriaImpl criteria, IList results)
手がかりはありますか?
これを見つけました: https://nhibernate.jira.com/browse/NH-2961
そして、fetchmode.joinまたはdistinctrootentitytransformerまたはキャッシュを削除すると、機能します。