Example #1
0
		private void InitStatementString(IOuterJoinLoadable elementPersister, string alias, int batchSize, SqlString subquery)
		{
			int joins = CountEntityPersisters(associations);
			Suffixes = BasicLoader.GenerateSuffixes(joins + 1);

			int collectionJoins = CountCollectionPersisters(associations) + 1;
			CollectionSuffixes = BasicLoader.GenerateSuffixes(joins + 1, collectionJoins);

			SqlStringBuilder whereString = WhereString(alias, oneToManyPersister.KeyColumnNames, subquery, batchSize);
			string filter = oneToManyPersister.FilterFragment(alias, EnabledFilters);
			whereString.Insert(0, StringHelper.MoveAndToBeginning(filter));

			JoinFragment ojf = MergeOuterJoins(associations);
			SqlSelectBuilder select =
				new SqlSelectBuilder(Factory).SetSelectClause(
					oneToManyPersister.SelectFragment(null, null, alias, Suffixes[joins], CollectionSuffixes[0], true)
					+ SelectString(associations)).SetFromClause(elementPersister.FromTableFragment(alias)
					                                            + elementPersister.FromJoinFragment(alias, true, true)).SetWhereClause(
					whereString.ToSqlString()).SetOuterJoins(ojf.ToFromFragmentString,
					                                         ojf.ToWhereFragmentString
					                                         + elementPersister.WhereJoinFragment(alias, true, true));

			select.SetOrderByClause(OrderBy(associations, oneToManyPersister.GetSQLOrderByString(alias)));

			if (Factory.Settings.IsCommentsEnabled)
			{
				select.SetComment("load one-to-many " + oneToManyPersister.Role);
			}

			SqlString = select.ToSqlString();
		}
        private void InitStatementString(IOuterJoinLoadable elementPersister, string alias, int batchSize, SqlString subquery)
        {
            int joins = CountEntityPersisters(associations);

            Suffixes = BasicLoader.GenerateSuffixes(joins + 1);

            int collectionJoins = CountCollectionPersisters(associations) + 1;

            CollectionSuffixes = BasicLoader.GenerateSuffixes(joins + 1, collectionJoins);

            SqlStringBuilder whereString = WhereString(oneToManyPersister.GenerateTableAliasForKeyColumns(alias), oneToManyPersister.KeyColumnNames, subquery, batchSize);
            string           filter      = oneToManyPersister.FilterFragment(alias, EnabledFilters);

            whereString.Insert(0, StringHelper.MoveAndToBeginning(filter));

            JoinFragment     ojf    = MergeOuterJoins(associations);
            SqlSelectBuilder select =
                new SqlSelectBuilder(Factory).SetSelectClause(
                    oneToManyPersister.SelectFragment(null, null, alias, Suffixes[joins], CollectionSuffixes[0], true)
                    + SelectString(associations)).SetFromClause(elementPersister.FromTableFragment(alias)
                                                                + oneToManyPersister.FromJoinFragment(alias, true, true)).SetWhereClause(
                    whereString.ToSqlString()).SetOuterJoins(ojf.ToFromFragmentString,
                                                             ojf.ToWhereFragmentString
                                                             + elementPersister.WhereJoinFragment(alias, true, true));

            select.SetOrderByClause(OrderBy(associations, oneToManyPersister.GetSQLOrderByString(alias)));

            if (Factory.Settings.IsCommentsEnabled)
            {
                select.SetComment("load one-to-many " + oneToManyPersister.Role);
            }

            SqlString = select.ToSqlString();
        }
        private void InitStatementString(
            IQueryableCollection collPersister,
            IOuterJoinLoadable persister,
            string alias,
            IList associations,
            int batchSize,
            ISessionFactoryImplementor factory
            )
        {
            int joins = associations.Count;

            Suffixes = GenerateSuffixes(joins + 1);

            SqlStringBuilder whereSqlString = WhereString(factory, alias, collPersister.KeyColumnNames, collPersister.KeyType, batchSize);

            if (collectionPersister.HasWhere)
            {
                whereSqlString
                .Add(" and ")
                .Add(collectionPersister.GetSQLWhereString(alias));
            }

            JoinFragment ojf = MergeOuterJoins(associations);

            SqlSelectBuilder select = new SqlSelectBuilder(factory)
                                      .SetSelectClause(
                collectionPersister.SelectFragment(alias, Suffixes[joins], true).ToString() +
                SelectString(associations, factory)
                )
                                      .SetFromClause(
                persister.FromTableFragment(alias).Append(
                    persister.FromJoinFragment(alias, true, true)
                    )
                )
                                      .SetWhereClause(whereSqlString.ToSqlString())
                                      .SetOuterJoins(
                ojf.ToFromFragmentString,
                ojf.ToWhereFragmentString.Append(
                    persister.WhereJoinFragment(alias, true, true)
                    )
                );

            if (collectionPersister.HasOrdering)
            {
                select.SetOrderByClause(collectionPersister.GetSQLOrderByString(alias));
            }

            SqlString = select.ToSqlString();
        }
Example #4
0
 /// <summary>
 /// Include discriminator, don't include the class where string.
 /// </summary>
 /// <returns></returns>
 protected virtual SqlString GetWhereFragment()
 {
     return(persister.WhereJoinFragment(alias, true, true));
 }
		private void InitStatementString(
			IQueryableCollection collPersister,
			IOuterJoinLoadable persister,
			string alias,
			IList associations,
			int batchSize,
			ISessionFactoryImplementor factory
			)
		{
			int joins = associations.Count;

			Suffixes = GenerateSuffixes( joins + 1 );

			SqlStringBuilder whereSqlString = WhereString( factory, alias, collPersister.KeyColumnNames, collPersister.KeyType, batchSize );

			if( collectionPersister.HasWhere )
			{
				whereSqlString
					.Add( " and " )
					.Add( collectionPersister.GetSQLWhereString( alias ) );
			}

			JoinFragment ojf = MergeOuterJoins( associations );

			SqlSelectBuilder select = new SqlSelectBuilder( factory )
				.SetSelectClause(
					collectionPersister.SelectFragment( alias, Suffixes[ joins ], true ).ToString() +
					SelectString( associations, factory )
				)
				.SetFromClause(
					persister.FromTableFragment( alias ).Append(
					persister.FromJoinFragment( alias, true, true )
					)
				)
				.SetWhereClause( whereSqlString.ToSqlString() )
				.SetOuterJoins(
					ojf.ToFromFragmentString,
					ojf.ToWhereFragmentString.Append(
					persister.WhereJoinFragment( alias, true, true )
					)
				);

			if( collectionPersister.HasOrdering )
			{
				select.SetOrderByClause( collectionPersister.GetSQLOrderByString( alias ) );
			}

			SqlString = select.ToSqlString();
		}