LINQ - Query specified join fetching, but the owner of the fetched association was not present in the select list

1,195 views
Skip to first unread message

mynkow

unread,
May 30, 2012, 6:23:35 AM5/30/12
to nhu...@googlegroups.com
Is there any workaround for this error? 

Query specified join fetching, but the owner of the fetched association was not present in the select list [FromElement{explicit,not a collection join,fetch join,fetch non-lazy properties


I read somewhere that people solved this with introducing an alias in HQL queries. What about Linq?

10x

Alexander I. Zaytsev

unread,
May 30, 2012, 6:57:01 AM5/30/12
to nhu...@googlegroups.com
Hi, Could you please provide the query which throws and full stack trace of the exception?

среда, 30 мая 2012 г., 16:23:35 UTC+6 пользователь mynkow написал:

mynkow

unread,
May 30, 2012, 7:47:01 AM5/30/12
to nhu...@googlegroups.com
Sure:

Mappings:
public class LogDtoMap : DtoClassMap<LogDto>
    {
        public LogDtoMap()
        {
            Table("log");
            Id(x => x.Id, "Id");
 
            Map(x => x.Date, "date");
            Map(x => x.Message, "message");
            Map(x => x.Level, "level");
            Map(x => x.Logger, "logger");
            Map(x => x.Exception, "exception");
            Map(x => x.Url, "url").Nullable();
            References(x => x.User, "user_id").NotFound.Ignore().Nullable();
        }
    }

public class UserDtoMap : DtoClassMap<UserDto>
    {
        public UserDtoMap()
        {
            Table("users");
            Id(user => user.Id, "user_id");
 
            Map(user => user.Username, "login");
            Map(user => user.Email, "email");
        }
    }

Query:
Session.Query<LogDto>().Fetch(x => x.User)

Query specified join fetching, but the owner of the fetched association was not present in the select list 
[FromElement{explicit,not a collection join,fetch join,fetch non-lazy properties,classAlias=_0,role=,tableName=users,tableAlias=userdto1_,origin=log logdto0_,colums={logdto0_.user_id ,className=ClientCode.Query.Dto.UserDto}}] 
[.Count[ClientCode.Query.Dto.LogDto](.Fetch[ClientCode.Query.Dto.LogDto,ClientCode.Query.Dto.UserDto](NHibernate.Linq.NhQueryable`1[ClientCode.Query.Dto.LogDto], Quote((x, ) => (x.User)), ), )]

Exception Details:
NHibernate.QueryException: Query specified join fetching, but the owner of the fetched association was not present in the select list [FromElement{explicit,not a collection join,fetch join,fetch non-lazy properties,classAlias=_0,role=,tableName=users,tableAlias=userdto1_,origin=log logdto0_,colums={logdto0_.user_id ,className=ClientCode.Query.Dto.UserDto}}] [.Count[ClientCode.Query.Dto.LogDto](.Fetch[ClientCode.Query.Dto.LogDto,ClientCode.Query.Dto.UserDto](NHibernate.Linq.NhQueryable`1[ClientCode.Query.Dto.LogDto], Quote((x, ) => (x.User)), ), )]

Stack Trace:

[QueryException: Query specified join fetching, but the owner of the fetched association was not present in the select list [FromElement{explicit,not a collection join,fetch join,fetch non-lazy properties,classAlias=_0,role=,tableName=users,tableAlias=userdto1_,origin=log logdto0_,colums={logdto0_.user_id ,className=ClientCode.Query.Dto.UserDto}}] [.Count[ClientCode.Query.Dto.LogDto](.Fetch[ClientCode.Query.Dto.LogDto,ClientCode.Query.Dto.UserDto](NHibernate.Linq.NhQueryable`1[ClientCode.Query.Dto.LogDto], Quote((x, ) => (x.User)), ), )]]
   NHibernate.Hql.Ast.ANTLR.Tree.SelectClause.InitializeExplicitSelectClause(FromClause fromClause) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Hql\Ast\ANTLR\Tree\SelectClause.cs:211
   NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.ProcessQuery(IASTNode select, IASTNode query) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Hql\Ast\ANTLR\HqlSqlWalker.cs:476
   NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.unionedQuery() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Hql\Ast\ANTLR\Generated\HqlSqlWalker.cs:1938
   NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.query() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Hql\Ast\ANTLR\Generated\HqlSqlWalker.cs:1514
   NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.selectStatement() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Hql\Ast\ANTLR\Generated\HqlSqlWalker.cs:540
   NHibernate.Hql.Ast.ANTLR.HqlSqlWalker.statement() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Hql\Ast\ANTLR\Generated\HqlSqlWalker.cs:439
   NHibernate.Hql.Ast.ANTLR.HqlSqlTranslator.Translate() in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Hql\Ast\ANTLR\QueryTranslatorImpl.cs:566
   NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.DoCompile(IDictionary`2 replacements, Boolean shallow, String collectionRole) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Hql\Ast\ANTLR\QueryTranslatorImpl.cs:373
   NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory.CreateQueryTranslators(IASTNode ast, String queryIdentifier, String collectionRole, Boolean shallow, IDictionary`2 filters, ISessionFactoryImplementor factory) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Hql\Ast\ANTLR\ASTQueryTranslatorFactory.cs:43
   NHibernate.Engine.Query.HQLExpressionQueryPlan.CreateTranslators(String expressionStr, IQueryExpression queryExpression, String collectionRole, Boolean shallow, IDictionary`2 enabledFilters, ISessionFactoryImplementor factory) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Engine\Query\HQLExpressionQueryPlan.cs:34
   NHibernate.Engine.Query.QueryPlanCache.GetHQLQueryPlan(IQueryExpression queryExpression, Boolean shallow, IDictionary`2 enabledFilters) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Engine\Query\QueryPlanCache.cs:89
   NHibernate.Impl.AbstractSessionImpl.GetHQLQueryPlan(IQueryExpression queryExpression, Boolean shallow) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\AbstractSessionImpl.cs:312
   NHibernate.Impl.AbstractSessionImpl.CreateQuery(IQueryExpression queryExpression) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\AbstractSessionImpl.cs:268
   NHibernate.Linq.DefaultQueryProvider.Execute(Expression expression) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Linq\DefaultQueryProvider.cs:33
   ClientCode.Manage.Helpers.DynamicQueryable.Count(IQueryable source) in D:\Projects\ClientCode\master\Web\src\ClientCode.Web.WebApp\Areas\Manage\Helpers\DynamicQueryable.cs:117
   ClientCode.Manage.Helpers.Grid.GridFilter`1.DataFilter(GridSettings param) in D:\Projects\ClientCode\master\Web\src\ClientCode.Web.WebApp\Areas\Manage\Helpers\Grid\GridFilter.cs:90
   ClientCode.Manage.Controllers.LogController.GetList(GridSettings param) in D:\Projects\ClientCode\master\Web\src\ClientCode.Web.WebApp\Areas\Manage\Controllers\LogController.cs:33
   lambda_method(Closure , ControllerBase , Object[] ) +127
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +264
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +39
   Castle.Proxies.Invocations.ControllerActionInvoker_InvokeActionMethod.InvokeMethodOnTarget() +190
   Castle.DynamicProxy.AbstractInvocation.Proceed() +72
   Glimpse.Net.Interceptor.InvokeActionMethodInterceptor.Intercept(IInvocation invocation) +416
   Castle.DynamicProxy.AbstractInvocation.Proceed() +316
   Castle.Proxies.ControllerActionInvokerProxy.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +206
   System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +129
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +826266
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +314
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +825488
   System.Web.Mvc.Controller.ExecuteCore() +159
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +335
   System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +62
   System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +20
   System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +54
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +469
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +375

mynkow

unread,
May 30, 2012, 8:02:12 AM5/30/12
to nhu...@googlegroups.com
Actually I missed the breaking part of that query:

Session.Query<LogDto>().Fetch(x => x.User).Count()

mynkow

unread,
May 30, 2012, 10:11:22 AM5/30/12
to nhu...@googlegroups.com
I think this is fixed in 3.3

can you confirm?


On Wednesday, May 30, 2012 1:23:35 PM UTC+3, mynkow wrote:

mynkow

unread,
May 30, 2012, 1:15:45 PM5/30/12
to nhu...@googlegroups.com
Just upgraded to 3.3 Now it works.


On Wednesday, May 30, 2012 1:23:35 PM UTC+3, mynkow wrote:

Alexander I. Zaytsev

unread,
May 30, 2012, 1:26:26 PM5/30/12
to nhu...@googlegroups.com
Great!

среда, 30 мая 2012 г., 23:15:45 UTC+6 пользователь mynkow написал:
Reply all
Reply to author
Forward
0 new messages