Именованный запрос с параметрами в HQL - Throwing System.IndexOutOfRangeException в классе NHibernate.Hql.Ast.ANTLR.Tree.FromElement.RenderText

66
6

При обновлении с NHibernate с версии 3.1.0.4 до 4.0.4.4 встречается событие IndexOutOfRangeException.

Именованный запрос HQL с параметрами вызывает исключение IndexOutOfRangeException при вводе метода RenderText() групп NHibernate.Hql.Ast.ANTLR.Tree.FromElement. HQL-запрос ниже:

<query name="NameQuery">
<![CDATA[
select od.id, od.Assigned.Number
from od
where od.Status = :status
and od.Assigned.Number in (:number)
]]>
</query>

Код NHibernate содержит массив параметров. При попытке ссылаться на первый индекс признается, что массив пуст и генерируется исключение IndexOutOfRangeException. Ниже приведен вывод трассировки стека:

**System.IndexOutOfRangeException**: Index was outside the bounds of the array.
at NHibernate.Hql.Ast.ANTLR.Tree.FromElement.RenderText(ISessionFactoryImplementor sessionFactory) in c:\Users\x\Downloads\nhibernate-core-4.0.x\src\NHibernate\Hql\Ast\ANTLR\Tree\FromElement.cs:line 347
at NHibernate.Hql.Ast.ANTLR.SqlGenerator.Out(IASTNode n) in c:\Users\x\Downloads\nhibernate-core-4.0.x\src\NHibernate\Hql\Ast\ANTLR\SqlGenerator.cs:line 137
at NHibernate.Hql.Ast.ANTLR.SqlGenerator.NestedFromFragment(IASTNode d, IASTNode parent) in c:\Users\x\Downloads\nhibernate-core-4.0.x\src\NHibernate\Hql\Ast\ANTLR\SqlGenerator.cs:line 260
at NHibernate.Hql.Ast.ANTLR.SqlGenerator.tableJoin(IASTNode parent) in c:\Users\x\Downloads\nhibernate-core-4.0.x\src\NHibernate\Hql\Ast\ANTLR\Generated\SqlGenerator.cs:line 3492
at NHibernate.Hql.Ast.ANTLR.SqlGenerator.fromTable() in c:\Users\x\Downloads\nhibernate-core-4.0.x\src\NHibernate\Hql\Ast\ANTLR\Generated\SqlGenerator.cs:line 3260
at NHibernate.Hql.Ast.ANTLR.SqlGenerator.from() in c:\Users\x\Downloads\nhibernate-core-4.0.x\src\NHibernate\Hql\Ast\ANTLR\Generated\SqlGenerator.cs:line 3137
at NHibernate.Hql.Ast.ANTLR.SqlGenerator.selectStatement() in c:\Users\x\Downloads\nhibernate-core-4.0.x\src\NHibernate\Hql\Ast\ANTLR\Generated\SqlGenerator.cs:line 376
at NHibernate.Hql.Ast.ANTLR.SqlGenerator.statement() in c:\Users\x\Downloads\nhibernate-core-4.0.x\src\NHibernate\Hql\Ast\ANTLR\Generated\SqlGenerator.cs:line 274
at NHibernate.Hql.Ast.ANTLR.HqlSqlGenerator.Generate() in c:\Users\x\Downloads\nhibernate-core-4.0.x\src\NHibernate\Hql\Ast\ANTLR\QueryTranslatorImpl.cs:line 609
at NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.DoCompile(IDictionary'2 replacements, Boolean shallow, String collectionRole) in c:\Users\x\Downloads\nhibernate-core-4.0.x\src\NHibernate\Hql\Ast\ANTLR\QueryTranslatorImpl.cs:line 351
at NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.Compile(IDictionary'2 replacements, Boolean shallow) in c:\Users\x\Downloads\nhibernate-core-4.0.x\src\NHibernate\Hql\Ast\ANTLR\QueryTranslatorImpl.cs:line 70
at NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory.CreateQueryTranslators(IASTNode ast, String queryIdentifier, String collectionRole, Boolean shallow, IDictionary'2 filters, ISessionFactoryImplementor factory) in c:\Users\x\Downloads\nhibernate-core-4.0.x\src\NHibernate\Hql\Ast\ANTLR\ASTQueryTranslatorFactory.cs:line 39
at NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory.CreateQueryTranslators(IQueryExpression queryExpression, String collectionRole, Boolean shallow, IDictionary'2 filters, ISessionFactoryImplementor factory) in c:\Users\x\Downloads\nhibernate-core-4.0.x\src\NHibernate\Hql\Ast\ANTLR\ASTQueryTranslatorFactory.cs:line 24
at NHibernate.Engine.Query.QueryExpressionPlan.CreateTranslators(IQueryExpression queryExpression, String collectionRole, Boolean shallow, IDictionary'2 enabledFilters, ISessionFactoryImplementor factory) in c:\Users\x\Downloads\nhibernate-core-4.0.x\src\NHibernate\Engine\Query\QueryExpressionPlan.cs:line 32
at NHibernate.Engine.Query.QueryExpressionPlan..ctor(IQueryExpression queryExpression, Boolean shallow, IDictionary'2 enabledFilters, ISessionFactoryImplementor factory) in c:\Users\x\Downloads\nhibernate-core-4.0.x\src\NHibernate\Engine\Query\QueryExpressionPlan.cs:line 13
at NHibernate.Engine.Query.QueryPlanCache.GetHQLQueryPlan(IQueryExpression queryExpression, Boolean shallow, IDictionary'2 enabledFilters) in c:\Users\x\Downloads\nhibernate-core-4.0.x\src\NHibernate\Engine\Query\QueryPlanCache.cs:line 67
at NHibernate.Impl.SessionFactoryImpl.CheckNamedQueries() in c:\Users\x\Downloads\nhibernate-core-4.0.x\src\NHibernate\Impl\SessionFactoryImpl.cs:line 1157
at NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, IMapping mapping, Settings settings, EventListeners listeners) in c:\Users\x\Downloads

Мне не удалось определить, что вызывает этот параметр Array, чтобы он был пустым. Какие-либо предложения?

спросил(а) 2016-05-17T18:30:00+03:00 4 года, 1 месяц назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема