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(); }
protected void InitStatementString( IList associations, SqlString condition, string orderBy, ISessionFactoryImplementor factory) { int joins = CountClassPersisters(associations); Suffixes = GenerateSuffixes(joins + 1); JoinFragment ojf = MergeOuterJoins(associations); this.SqlString = new SqlSelectBuilder(factory) .SetSelectClause( persister.SelectFragment(alias, Suffixes[joins]) + SelectString(associations, factory) ) .SetFromClause( persister.FromTableFragment(alias).Append( persister.FromJoinFragment(alias, true, true)) ) .SetWhereClause(condition) .SetOuterJoins( ojf.ToFromFragmentString, ojf.ToWhereFragmentString.Append(GetWhereFragment()) ) .SetOrderByClause(orderBy) .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(); }
private void InitStatementString(SqlString projection, SqlString condition, SqlString orderBy, string groupBy, SqlString having, LockMode lockMode) { int joins = CountEntityPersisters(associations); Suffixes = BasicLoader.GenerateSuffixes(joins + 1); JoinFragment ojf = MergeOuterJoins(associations); SqlString selectClause = projection ?? new SqlString(persister.SelectFragment(alias, Suffixes[joins]) + SelectString(associations)); SqlSelectBuilder select = new SqlSelectBuilder(Factory) .SetLockMode(lockMode) .SetSelectClause(selectClause) .SetFromClause(Dialect.AppendLockHint(lockMode, persister.FromTableFragment(alias)) + persister.FromJoinFragment(alias, true, true)) .SetWhereClause(condition) .SetOuterJoins(ojf.ToFromFragmentString, ojf.ToWhereFragmentString + WhereFragment) .SetOrderByClause(OrderBy(associations, orderBy)) .SetGroupByClause(groupBy) .SetHavingClause(having); if (Factory.Settings.IsCommentsEnabled) { select.SetComment(Comment); } 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(); }