public override void PostInstantiate(ISessionFactoryImplementor factory)
        {
            InitPropertyPaths(factory);

            InitLockers();

            // initialize the SqlStrings - these are in the PostInstantiate method because we need
            // to have every other IClassPersister loaded so we can resolve the IType for the
            // relationships.  In Hibernate they are able to just use ? and not worry about Parameters until
            // the statement is actually called.  We need to worry about Parameters when we are building
            // the IClassPersister...
            sqlDeleteString         = GenerateDeleteString();
            sqlInsertString         = GenerateInsertString(false, PropertyInsertability);
            sqlIdentityInsertString = IsIdentifierAssignedByInsert ?
                                      GenerateInsertString(true, PropertyInsertability) :
                                      null;

            sqlUpdateString         = GenerateUpdateString(PropertyUpdateability);
            sqlConcreteSelectString = GenerateConcreteSelectString(PropertyUpdateability);
            sqlVersionSelectString  = GenerateSelectVersionString(factory);

            IUniqueEntityLoader loader = CreateEntityLoader(factory);

            loaders.Add(LockMode.None, loader);
            loaders.Add(LockMode.Read, loader);

            SqlString selectForUpdate = Dialect.SupportsForUpdate ? GenerateSelectForUpdateString() : GenerateSelectString(null);

            loaders.Add(LockMode.Upgrade, new SimpleEntityLoader(this, selectForUpdate, LockMode.Upgrade));

            SqlString selectForUpdateNoWaitString = Dialect.SupportsForUpdateNoWait ? GenerateSelectForUpdateNoWaitString() : selectForUpdate.Clone();

            loaders.Add(LockMode.UpgradeNoWait, new SimpleEntityLoader(this, selectForUpdateNoWaitString, LockMode.UpgradeNoWait));

            CreateUniqueKeyLoaders(factory);
        }
		protected void CreateQueryLoader()
		{
			if (loaderName != null)
				queryLoader = new NamedQueryLoader(loaderName, this);
		}
		public override void PostInstantiate( ISessionFactoryImplementor factory )
		{
			InitPropertyPaths( factory );

			loader = CreateEntityLoader( factory );

			CreateUniqueKeyLoaders( factory );

			InitLockers( );

			// initialize the Statements - these are in the PostInstantiate method because we need
			// to have every other IClassPersister loaded so we can resolve the IType for the 
			// relationships.  In Hibernate they are able to just use ? and not worry about Parameters until
			// the statement is actually called.  We need to worry about Parameters when we are building
			// the IClassPersister...

			sqlDeleteStrings = GenerateDeleteStrings();
			sqlInsertStrings = GenerateInsertStrings( false, PropertyInsertability );
			sqlIdentityInsertStrings = IsIdentifierAssignedByInsert ?
				GenerateInsertStrings( true, PropertyInsertability ) :
				null;

			sqlUpdateStrings = GenerateUpdateStrings( PropertyUpdateability );

			sqlVersionSelectString = GenerateSelectVersionString( factory );
			sqlConcreteSelectString = GenerateConcreteSelectString();

			// This is used to determine updates for objects that came in via update()
			propertyHasColumns = new bool[sqlUpdateStrings.Length];
			for( int m = 0; m < sqlUpdateStrings.Length; m++ )
			{
				propertyHasColumns[ m ] = ( sqlUpdateStrings[ m ] != null );
			}
		}