Hi,
We have our application (CMS system and corporate web site on it) working with NHibernate. Once some special conditions in database formed and we have got two independent NHibernate exceptions, that never appeared early and one of them disappeared after further work with application. But we steel need to resolve this problems.
1. First problem appears when system try to perform special named hql request. When system try to do it first time next exception occurs:
Code:
NHibernate.QueryException
Incorrect query syntax [ FROM Genesys.CWS.DataAccess.Entities.UserTabRole AS userTabRole WHERE (userTabRole.User.Id = :userId) AND userTabRole.TabId IN ( SELECT tab.Id FROM Genesys.CWS.DataAccess.Entities.Tab AS tab WHERE tab.Portal.Id = :portalId ) ]
NHibernate.Hql.QueryTranslator.Compile()
NHibernate.Hql.QueryTranslator.Compile(ISessionFactoryImplementor factory, IDictionary replacements, Boolean scalar)
NHibernate.Impl.SessionFactoryImpl.GetQuery(String queryString, Boolean shallow)
NHibernate.Impl.SessionImpl.GetQueries(String query, Boolean scalar)
NHibernate.Impl.SessionImpl.Find(String query, QueryParameters parameters)
NHibernate.Impl.QueryImpl.List()
Genesys.CWS.BusinessLogic.Controllers.TabsSecurityController.GetUserTabRoles(User user, Portal portal)________________________________________
System.ArgumentOutOfRangeException
Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
System.Collections.ArrayList.get_Item(Int32 index)
NHibernate.Hql.WhereParser.CloseExpression(QueryTranslator q, String lcToken)
NHibernate.Hql.WhereParser.Token(String token, QueryTranslator q)
NHibernate.Hql.WhereParser.End(QueryTranslator q)
NHibernate.Hql.ClauseParser.End(QueryTranslator q)
NHibernate.Hql.PreprocessingParser.End(QueryTranslator q)
NHibernate.Hql.ParserHelper.Parse(IParser p, String text, String seperators, QueryTranslator q)
NHibernate.Hql.QueryTranslator.Compile()
At second and next times occurs another exception:
Code:
NHibernate.QueryException
Incorrect query syntax [ FROM Genesys.CWS.DataAccess.Entities.UserTabRole AS userTabRole WHERE (userTabRole.User.Id = :userId) AND userTabRole.TabId IN ( SELECT tab.Id FROM Genesys.CWS.DataAccess.Entities.Tab AS tab WHERE tab.Portal.Id = :portalId ) ]
NHibernate.Hql.QueryTranslator.Compile()
NHibernate.Hql.QueryTranslator.Compile(ISessionFactoryImplementor factory, IDictionary replacements, Boolean scalar)
NHibernate.Impl.SessionFactoryImpl.GetQuery(String queryString, Boolean shallow)
NHibernate.Impl.SessionImpl.GetQueries(String query, Boolean scalar)
NHibernate.Impl.SessionImpl.Find(String query, QueryParameters parameters)
NHibernate.Impl.QueryImpl.List()
Genesys.CWS.BusinessLogic.Controllers.TabsSecurityController.GetUserTabRoles(User user, Portal portal)
________________________________________
System.ArgumentException
Item has already been added. Key in dictionary: "userTabRole" Key being added: "userTabRole"
System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add)
System.Collections.Hashtable.Add(Object key, Object value)
NHibernate.Hql.FromParser.Token(String token, QueryTranslator q)
NHibernate.Hql.ClauseParser.Token(String token, QueryTranslator q)
NHibernate.Hql.PreprocessingParser.Token(String token, QueryTranslator q)
NHibernate.Hql.ParserHelper.Parse(IParser p, String text, String seperators, QueryTranslator q)
NHibernate.Hql.QueryTranslator.Compile()
2. Another problem exception stack trace:
Code:
Unable to commit transaction
Genesys.CWS.WebApp.Global.Application_EndRequest(Object sender, EventArgs e)
________________________________________
NHibernate.AssertionFailure
owner not associated with session
NHibernate.Impl.SessionImpl.UpdateUnreachableCollection(PersistentCollection coll)
NHibernate.Impl.SessionImpl.FlushCollections()
NHibernate.Impl.SessionImpl.FlushEverything()
NHibernate.Impl.SessionImpl.Flush()
NHibernate.Transaction.AdoTransaction.Commit()
Genesys.CWS.WebApp.Global.Application_EndRequest(Object sender, EventArgs e)
This problem disappears after cleaning some tables in database, but it's defficult to figure out what exact data.
So, can anybody guess what data in database can invoke such exceptions? (I absolutely sure that these exceptions related to some special data.)
3. Also one related problem: I want to debug NHibernate and I need NHibernate package for .Net 1.1, that contains source for projects NHibernate, Nullables, Nullables.NHibernate, but I can’t find such one. Can anybody give me a link?