about the different behavior of each NH's query system.... well... it is normal... Different systems, different implementations, different results
On Mon, Jul 5, 2010 at 10:19 AM, Fabio Maulo <fabioma...@gmail.com> wrote: > For "First" and "FirstOrDefault" we can apply SetMaxResults(1) ... and fix > the bug (please check last JIRAs and add a new one if you can't find an > existing) > > For "Single" and "SingleOrDefault" we *shouldn't* apply SetMaxResults(1) > because doing so we will change the "Single" behavior (it should throw > exception when there are more than one results) > > > On Mon, Jul 5, 2010 at 10:11 AM, andrew6072 > <andrew.brun...@ukfuels.co.uk>wrote: > >> Hi Fabio, >> >> What do you mean by changing the meaning of Single ? >> >> Oh and It also happens with First(), and SingleOrDefault() as well >> >> It seems to be something to do with this call >> >> bool useLimit = UseLimit(selection, dialect); >> when I use Query<> it returns true, and if I use QueryOver<> it return >> false ??? >> >> I don't really understand how it all works but I've noticed the >> following. >> when its called using Query<> selection.firstrow = -1, and >> selection.MaxRows = 1 >> >> but when its called from QueryOver<> selection.FirstRow = 0, and >> selection.Maxrows = -1 >> >> >> >> >> Andrew >> >> >> On Jul 5, 12:38 pm, Fabio Maulo <fabioma...@gmail.com> wrote: >> > Confirmed, we have a bug. >> > We are changing the meaning of Single. >> > >> > >> > >> > On Mon, Jul 5, 2010 at 8:35 AM, Fabio Maulo <fabioma...@gmail.com> >> wrote: >> > > If our provider creates a paginated query for the method "Single" we >> have a >> > > bug. >> > >> > > On Mon, Jul 5, 2010 at 8:06 AM, andrew6072 < >> andrew.brun...@ukfuels.co.uk>wrote: >> > >> > >> Hi Fabio, >> > >> > >> I think the exception got chopped off, this is the full exception. >> > >> > >> [SQL: select * from ( select olauser0_.USER_ID as USER1_57_, >> > >> olauser0_.USERNAME as USERNAME57_, olauser0_.EMAIL_ADDRESS as >> > >> EMAIL3_57_, olauser0_.COMMENTS as COMMENTS57_, olauser0_.PASSWORD as >> > >> PASSWORD57_, olauser0_.PASSWORD_QUESTION as PASSWORD6_57_, >> > >> olauser0_.PASSWORD_ANSWER as PASSWORD7_57_, olauser0_.IS_APPROVED as >> > >> IS8_57_, olauser0_.IS_LOCKEDOUT as IS9_57_, olauser0_.LAST_LOGON_DATE >> > >> as LAST10_57_, olauser0_.CREATION_DATE as CREATION11_57_, >> > >> olauser0_.LAST_ACTIVITY_DATE as LAST12_57_, >> > >> olauser0_.LAST_PASSWORD_CHANGED_DATE as LAST13_57_, >> > >> olauser0_.LAST_LOCKOUT_DATE as LAST14_57_ from OLA_USERS olauser0_ >> > >> where (olauser0_.USERNAME is null) and (:p0 is null) or >> > >> olauser0_.USERNAME=:p0 ) where rownum <=:p2] ---> >> > >> Oracle.DataAccess.Client.OracleException ORA-01008: not all variables >> > >> bound at >> > >> Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 >> > >> errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* >> > >> pOpoSqlValCtx, Object src, String procedure, Boolean bCheck) >> > >> at Oracle.DataAccess.Client.OracleException.HandleError(Int32 >> > >> errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx, >> > >> OpoSqlValCtx* pOpoSqlValCtx, Object src, Boolean bCheck) >> > >> at Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean >> > >> requery, Boolean fillRequest, CommandBehavior behavior) >> > >> at >> > >> >> Oracle.DataAccess.Client.OracleCommand.ExecuteDbDataReader(CommandBehavior >> > >> behavior) >> > >> at >> > >> System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader() >> > >> at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd) >> > >> in >> d:\dev\oss\nhibernate\src\NHibernate\AdoNet\AbstractBatcher.cs:line >> > >> 242 >> > >> at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, Boolean >> > >> autoDiscoverTypes, Boolean callable, RowSelection selection, >> > >> ISessionImplementor session) in d:\dev\oss\nhibernate\src\NHibernate >> > >> \Loader\Loader.cs:line 1325 >> > >> at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, >> > >> QueryParameters queryParameters, Boolean returnProxies) in d:\dev\oss >> > >> \nhibernate\src\NHibernate\Loader\Loader.cs:line 401 >> > >> at >> > >> > >> >> NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor >> > >> session, QueryParameters queryParameters, Boolean returnProxies) in >> d: >> > >> \dev\oss\nhibernate\src\NHibernate\Loader\Loader.cs:line 236 >> > >> at NHibernate.Loader.Loader.DoList(ISessionImplementor session, >> > >> QueryParameters queryParameters) in d:\dev\oss\nhibernate\src >> > >> \NHibernate\Loader\Loader.cs:line 1653 >> > >> --- End of inner exception stack trace --- >> > >> at NHibernate.Loader.Loader.DoList(ISessionImplementor session, >> > >> QueryParameters queryParameters) in d:\dev\oss\nhibernate\src >> > >> \NHibernate\Loader\Loader.cs:line 1662 >> > >> at >> > >> NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor >> > >> session, QueryParameters queryParameters) in >> d:\dev\oss\nhibernate\src >> > >> \NHibernate\Loader\Loader.cs:line 1577 >> > >> at NHibernate.Loader.Loader.List(ISessionImplementor session, >> > >> QueryParameters queryParameters, ISet`1 querySpaces, IType[] >> > >> resultTypes) in d:\dev\oss\nhibernate\src\NHibernate\Loader >> > >> \Loader.cs:line 1567 >> > >> at >> > >> NHibernate.Hql.Ast.ANTLR.Loader.QueryLoader.List(ISessionImplementor >> > >> session, QueryParameters queryParameters) in >> d:\dev\oss\nhibernate\src >> > >> \NHibernate\Hql\Ast\ANTLR\Loader\QueryLoader.cs:line 297 >> > >> at >> > >> NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.List(ISessionImplementor >> > >> session, QueryParameters queryParameters) in >> d:\dev\oss\nhibernate\src >> > >> \NHibernate\Hql\Ast\ANTLR\QueryTranslatorImpl.cs:line 107 >> > >> at NHibernate.Engine.Query.HQLQueryPlan.PerformList(QueryParameters >> > >> queryParameters, ISessionImplementor session, IList results) in >> d:\dev >> > >> \oss\nhibernate\src\NHibernate\Engine\Query\HQLQueryPlan.cs:line 105 >> > >> at NHibernate.Impl.SessionImpl.List(IQueryExpression >> > >> queryExpression, QueryParameters queryParameters, IList results) in >> d: >> > >> \dev\oss\nhibernate\src\NHibernate\Impl\SessionImpl.cs:line 676 >> > >> at NHibernate.Impl.SessionImpl.List(IQueryExpression >> > >> queryExpression, QueryParameters parameters) in d:\dev\oss\nhibernate >> > >> \src\NHibernate\Impl\SessionImpl.cs:line 655 >> > >> at NHibernate.Impl.ExpressionQueryImpl.List() in d:\dev\oss >> > >> \nhibernate\src\NHibernate\Impl\ExpressionQueryImpl.cs:line 63 >> > >> at NHibernate.Linq.NhQueryProvider.Execute(Expression expression) >> > >> in d:\dev\oss\nhibernate\src\NHibernate\Linq\NhQueryProvider.cs:line >> > >> 31 >> > >> at NHibernate.Linq.NhQueryProvider.Execute[TResult](Expression >> > >> expression) in d:\dev\oss\nhibernate\src\NHibernate\Linq >> > >> \NhQueryProvider.cs:line 55 >> > >> at System.Linq.Queryable.Single[TSource](IQueryable`1 source) >> > >> at >> > >> >> OlaCommon.Data.Repository.NHibernate.UserRepository.GetByUsername(String >> > >> username) in >> d:\dev\tfs\OlaCommon\OlaCommon.Data\Repository\NHibernate >> > >> \UserRepository.cs:line 27 >> > >> at >> > >> >> OlaMonitor.Infrastructure.NHibernateMembershipProvider.ValidateUser(String >> > >> username, String password) in d:\dev\tfs\OlaMonitor\OlaMonitor >> > >> \Infrastructure\NHibernateMembershipProvider.cs:line 248 >> > >> > >> Validateuser calls the following method >> > >> public OlaUser GetByUsername(string username) >> > >> { >> > >> var session = GetSession(); >> > >> var query = (from a in session.Query<OlaUser>() >> > >> where a.Username == username >> > >> select a); >> > >> var user = query.Single(); >> > >> return user; >> > >> } >> > >> > >> Do you need anything else ? >> > >> > >> Andrew >> > >> > >> On Jul 5, 11:43 am, Fabio Maulo <fabioma...@gmail.com> wrote: >> > >> > Please send us something else... In some point you are forcing the >> > >> > pagination of the query. >> > >> > >> > -- >> > >> > Fabio Maulo >> > >> > >> > El 05/07/2010, a las 07:16, andrew6072 < >> andrew.brun...@ukfuels.co.uk> >> > >> escribió: >> > >> > >> > > Hi, >> > >> > >> > > Not sure if I've done something wrong but I can't get this to >> work, if >> > >> > > I look at the query I can see one object, as soon as it hits the >> > >> > > query.single() it bombs with the stack below, am I missing >> something ? >> > >> > > Not sure if it makes any difference but I'm using fluent to >> create my >> > >> > > mappings. >> > >> > >> > > var query = (from a in session.Query<OlaUser>() >> > >> > > where a.Username == username >> > >> > > select a); >> > >> > >> > > var user = query.Single(); >> > >> > >> > > Andrew >> > >> > >> > > [ select * from ( select olauser0_.USER_ID as USER1_57_, >> > >> > > olauser0_.USERNAME as USERNAME57_, olauser0_.EMAIL_ADDRESS as >> > >> > > EMAIL3_57_, olauser0_.COMMENTS as COMMENTS57_, olauser0_.PASSWORD >> as >> > >> > > PASSWORD57_, olauser0_.PASSWORD_QUESTION as PASSWORD6_57_, >> > >> > > olauser0_.PASSWORD_ANSWER as PASSWORD7_57_, olauser0_.IS_APPROVED >> as >> > >> > > IS8_57_, olauser0_.IS_LOCKEDOUT as IS9_57_, >> olauser0_.LAST_LOGON_DATE >> > >> > > as LAST10_57_, olauser0_.CREATION_DATE as CREATION11_57_, >> > >> > > olauser0_.LAST_ACTIVITY_DATE as LAST12_57_, >> > >> > > olauser0_.LAST_PASSWORD_CHANGED_DATE as LAST13_57_, >> > >> > > olauser0_.LAST_LOCKOUT_DATE as LAST14_57_ from USERS olauser0_ >> where >> > >> > > (olauser0_.USERNAME is null) and (:p0 is null) or >> > >> > > olauser0_.USERNAME=:p0 ) where rownum <=:p2 ] >> > >> > > Name:p1 - Value:andrewb >> > >> > >> > > Oracle.DataAccess.Client.OracleException ORA-01008: not all >> variables >> > >> > > bound at >> > >> > > Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 >> > >> > > errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* >> > >> > > pOpoSqlValCtx, Object src, String procedure, Boolean bCheck) >> > >> > > at Oracle.DataAccess.Client.OracleException.HandleError(Int32 >> > >> > > errCode, OracleConnection conn, String procedure, IntPtr >> opsErrCtx, >> > >> > > OpoSqlValCtx* pOpoSqlValCtx, Object src, Boolean bCheck) >> > >> > > at Oracle.DataAccess.Client.OracleCommand.ExecuteReader(Boolean >> > >> > > requery, Boolean fillRequest, CommandBehavior behavior) >> > >> > > at >> > >> > >> >> Oracle.DataAccess.Client.OracleCommand.ExecuteDbDataReader(CommandBehavior >> > >> > > behavior) >> > >> > > at >> > >> > > >> System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader() >> > >> > > at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand >> cmd) >> > >> > > in >> d:\dev\oss\nhibernate\src\NHibernate\AdoNet\AbstractBatcher.cs:line >> > >> > > 242 >> > >> > > at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, Boolean >> > >> > > autoDiscoverTypes, Boolean callable, RowSelection selection, >> > >> > > ISessionImplementor session) in >> d:\dev\oss\nhibernate\src\NHibernate >> > >> > > \Loader\Loader.cs:line 1325 >> > >> > > at NHibernate.Loader.Loader.DoQuery(ISessionImplementor >> session, >> > >> > > QueryParameters queryParameters, Boolean returnProxies) in >> d:\dev\oss >> > >> > > \nhibernate\src\NHibernate\Loader\Loader.cs:line 401 >> > >> > > at >> > >> > >> >> NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor >> > >> > > session, QueryParameters queryParameters, Boolean returnProxies) >> in d: >> > >> > > \dev\oss\nhibernate\src\NHibernate\Loader\Loader.cs:line 236 >> > >> > > at NHibernate.Loader.Loader.DoList(ISessionImplementor session, >> > >> > > QueryParameters queryParameters) in d:\dev\oss\nhibernate\src >> > >> > > \NHibernate\Loader\Loader.cs:line 1653 >> > >> > > 2010-07-05 10:54:20,134 [9] WARN >> NHibernate.Util.ADOExceptionReporter >> > >> > > - Oracle.DataAccess.Client.OracleException ORA-01008: not all >> > >> > > variables bound at >> > >> > > Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 >> > >> > > errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* >> > >> > > pOpoSqlValCtx, Object src, String procedure, Boolean bCheck) >> > >> > ... >> > >> > read more »- Hide quoted text - >> > >> > - Show quoted text - >> >> -- >> You received this message because you are subscribed to the Google Groups >> "nhusers" group. >> To post to this group, send email to nhus...@googlegroups.com. >> To unsubscribe from this group, send email to >> nhusers+unsubscr...@googlegroups.com<nhusers%2bunsubscr...@googlegroups.com> >> . >> For more options, visit this group at >> http://groups.google.com/group/nhusers?hl=en. >> >> > > > -- > Fabio Maulo > > -- Fabio Maulo -- You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to nhus...@googlegroups.com. To unsubscribe from this group, send email to nhusers+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/nhusers?hl=en.