You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
HQL fails with Second Level Cache enabled NHibernate.PropertyAccessException: could not get a field value by reflection getter of Entity.AcademicPeriod.m_ID
#3431
Open
EngSayed opened this issue
Sep 26, 2023
· 1 comment
We have a search screen which started to fail once enabling second level cache and enabling cache for query.
Here is the generated HQL: select count(distinct a) from Entity.CourseOffering a where (a.AcademicPeriod = :h0 AND a.CourseID Like :h1)
If I change it to the following at runtime then it works fine select count(distinct a) from Entity.CourseOffering a where (a.AcademicPeriod.ID = :h0 AND a.CourseID Like :h1)
NHibernate.PropertyAccessException: could not get a field value by reflection getter of TRS.CAMS.Academic.Entity.AcademicPeriod.m_ID ---> System.ArgumentException: Field 'm_ID' defined on type 'TRS.Flint.BLL.Entities.BusinessObject`1[Entity.AcademicPeriod]' is not a field on the target object which is of type 'System.Int64'.
at System.Reflection.RtFieldInfo.CheckConsistency(Object target)
at System.Reflection.RtFieldInfo.InternalGetValue(Object obj, StackCrawlMark& stackMark)
at System.Reflection.RtFieldInfo.GetValue(Object obj)
at NHibernate.Properties.FieldAccessor.FieldGetter.Get(Object target)
--- End of inner exception stack trace ---
at NHibernate.Properties.FieldAccessor.FieldGetter.Get(Object target)
at NHibernate.Tuple.Entity.PocoEntityTuplizer.GetIdentifierPropertyValue(Object entity)
at NHibernate.Tuple.Entity.AbstractEntityTuplizer.GetIdentifier(Object entity)
at NHibernate.Type.EntityType.ToLoggableString(Object value, ISessionFactoryImplementor factory)
at NHibernate.Impl.Printer.<ToString>b__5_0(KeyValuePair`2 ntv)
at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
at NHibernate.Util.CollectionPrinter.ToString(IEnumerable elements)
at NHibernate.Cache.QueryKey.ToString()
at NHibernate.Caches.StackExchangeRedis.DefaultRegionStrategy.GetCacheKey(Object value)
at NHibernate.Caches.StackExchangeRedis.AbstractRegionStrategy.Get(Object key)
at NHibernate.Caches.StackExchangeRedis.DefaultRegionStrategy.Get(Object key, Int32 retries)
at NHibernate.Cache.StandardQueryCache.Get(QueryKey key, QueryParameters queryParameters, ICacheAssembler[] returnTypes, ISet`1 spaces, ISessionImplementor session)
at NHibernate.Cache.QueryCacheExtensions.Get(IQueryCache queryCache, QueryKey key, QueryParameters queryParameters, ICacheAssembler[] returnTypes, ISet`1 spaces, ISessionImplementor session)
at NHibernate.Loader.Loader.GetResultFromQueryCache(ISessionImplementor session, QueryParameters queryParameters, ISet`1 querySpaces, IQueryCache queryCache, QueryKey key)
at NHibernate.Loader.Loader.ListUsingQueryCache(ISessionImplementor session, QueryParameters queryParameters, ISet`1 querySpaces)
at NHibernate.Loader.Hql.QueryLoader.List(ISessionImplementor session, QueryParameters queryParameters)
at NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.List(ISessionImplementor session, QueryParameters queryParameters)
at NHibernate.Engine.Query.HQLQueryPlan.PerformList(QueryParameters queryParameters, ISessionImplementor session, IList results)
at NHibernate.Impl.SessionImpl.List(IQueryExpression queryExpression, QueryParameters queryParameters, IList results, Object filterConnection)
at NHibernate.Impl.SessionImpl.List(IQueryExpression queryExpression, QueryParameters queryParameters, IList results)
at NHibernate.Impl.AbstractSessionImpl.List(IQueryExpression queryExpression, QueryParameters parameters)
at NHibernate.Impl.AbstractQueryImpl2.List()
at NHibernate.Impl.AbstractQueryImpl.UniqueResult[T]()
at Entities.SmartQuery`1.SearchCore(String criteria, Boolean& getCnt, Int32 pageSize, Boolean populateMatchList, SmartQueryFilterCriteria sq, String currentSortField, Int32 pageNumber, Int64& rowCount, String& currentSortDirection, ITransactionContext context) in ~\Entity\DB\SmartQueryT.cs:line 1375
The text was updated successfully, but these errors were encountered:
We have a search screen which started to fail once enabling second level cache and enabling cache for query.
Here is the generated HQL:
select count(distinct a) from Entity.CourseOffering a where (a.AcademicPeriod = :h0 AND a.CourseID Like :h1)
If I change it to the following at runtime then it works fine
select count(distinct a) from Entity.CourseOffering a where (a.AcademicPeriod.ID = :h0 AND a.CourseID Like :h1)
The text was updated successfully, but these errors were encountered: