Exemple #1
0
        public CriteriaJoinWalker(IOuterJoinLoadable persister, CriteriaQueryTranslator translator,
                                  ISessionFactoryImplementor factory, ICriteria criteria, string rootEntityName,
                                  IDictionary <string, IFilter> enabledFilters)
            : base(translator.RootSQLAlias, persister, factory, enabledFilters)
        {
            this.translator = translator;

            querySpaces = translator.GetQuerySpaces();

            if (translator.HasProjection)
            {
                InitProjection(
                    translator.GetSelect(),
                    translator.GetWhereCondition(),
                    translator.GetOrderBy(),
                    translator.GetGroupBy(),
                    translator.GetHavingCondition(),
                    enabledFilters,
                    LockMode.None,
                    translator.GetEntityProjections());

                resultTypes        = translator.ProjectedTypes;
                userAliases        = translator.ProjectedAliases;
                includeInResultRow = new bool[resultTypes.Length];
                ArrayHelper.Fill(IncludeInResultRow, true);
            }
            else
            {
                InitAll(translator.GetWhereCondition(), translator.GetOrderBy(), LockMode.None);

                resultTypes = new IType[] { TypeFactory.ManyToOne(persister.EntityName) };

                // root entity comes last
                userAliasList.Add(criteria.Alias);                 //root entity comes *last*
                resultTypeList.Add(translator.ResultType(criteria));
                includeInResultRowList.Add(true);
                userAliases        = userAliasList.ToArray();
                resultTypes        = resultTypeList.ToArray();
                includeInResultRow = includeInResultRowList.ToArray();
            }
        }