public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary<string, IFilter> enabledFilters)
        {
            var sqlBuilder = new SqlStringBuilder();
            SqlString[] columnNames = null;

            if (_propertyName != "*")
            {
                columnNames = CriterionUtil.GetColumnNames(_propertyName, _projection, criteriaQuery, criteria, enabledFilters);

                if (columnNames.Length != 1)
                {
                    throw new HibernateException("Contains may only be used with single-column properties");
                }
            } else
            {
                columnNames = new SqlString[]
                                  {
                                      new SqlString("*")
                                  };
            }

            sqlBuilder.Add("contains(")
              .Add(columnNames[0])
              .Add(",");

            sqlBuilder.Add(criteriaQuery.NewQueryParameter(GetParameterTypedValue(criteria, criteriaQuery)).Single());
            sqlBuilder.Add(")");

            return sqlBuilder.ToSqlString();
        }
		public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary enabledFilters)
		{
			//TODO: add default capacity
			SqlStringBuilder sqlBuilder = new SqlStringBuilder();

			string[] columnNames = criteriaQuery.GetColumnsUsingProjection(criteria, _propertyName);

			for (int i = 0; i < columnNames.Length; i++)
			{
				if (i > 0)
				{
					sqlBuilder.Add(" and ");
				}

				sqlBuilder.Add(columnNames[i])
					.Add(" is null");
			}

			if (columnNames.Length > 1)
			{
				sqlBuilder.Insert(0, "(");
				sqlBuilder.Add(")");
			}

			return sqlBuilder.ToSqlString();
		}
Пример #3
0
		public override TypedValue[] GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery)
		{
			ArrayList list = new ArrayList();
			IType type = criteriaQuery.GetTypeUsingProjection(criteria, _propertyName);

			if (type.IsComponentType)
			{
				IAbstractComponentType actype = (IAbstractComponentType) type;
				IType[] types = actype.Subtypes;

				for (int i = 0; i < types.Length; i++)
				{
					for (int j = 0; j < _values.Length; j++)
					{
						object subval = _values[j] == null ?
						                null :
						                actype.GetPropertyValues(_values[j])[i];
						list.Add(new TypedValue(types[i], subval));
					}
				}
			}
			else
			{
				for (int j = 0; j < _values.Length; j++)
				{
					list.Add(new TypedValue(type, _values[j]));
				}
			}

			return (TypedValue[]) list.ToArray(typeof(TypedValue));
		}
Пример #4
0
		/// <summary>
		/// Render the SQL fragment
		/// </summary>
		public virtual string ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery)
		{
			string[] columns = criteriaQuery.GetColumnAliasesUsingProjection(criteria, propertyName);

			StringBuilder fragment = new StringBuilder();

			ISessionFactoryImplementor factory = criteriaQuery.Factory;
			for (int i = 0; i < columns.Length; i++)
			{
				// TODO H3: bool lower = _ignoreCase && type.SqlTypes( factory )[ i ] == Types.VARCHAR
				bool lower = false;
				if (lower)
				{
					fragment.Append(factory.Dialect.LowercaseFunction)
						.Append('(');
				}
				fragment.Append(columns[i]);

				if (lower)
				{
					fragment.Append(')');
				}

				fragment.Append(ascending ? " asc" : " desc");

				if (i < columns.Length - 1)
				{
					fragment.Append(", ");
				}
			}

			return fragment.ToString();
		}
		/// <summary>
		/// Render the SQL Fragment.
		/// </summary>
		/// <param name="criteria"></param>
		/// <param name="position"></param>
		/// <param name="criteriaQuery"></param>
		/// <param name="enabledFilters"></param>
		/// <returns></returns>
		public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery, IDictionary<string, IFilter> enabledFilters)
		{
			ISpatialDialect spatialDialect = (ISpatialDialect)criteriaQuery.Factory.Dialect;
			string column1 = criteriaQuery.GetColumn(criteria, this.propertyName);
			string column2 = criteriaQuery.GetColumn(criteria, this.anotherPropertyName);

			SqlString sqlString;
			if (this.pattern == null)
			{
				sqlString = spatialDialect.GetSpatialRelateString(column1, column2, null, false, false);
			}
			else
			{
				string column3 = criteriaQuery.GetColumn(criteria, this.pattern);
				if (column3 == null)
				{
					sqlString = spatialDialect.GetSpatialRelateString(column1, column2, this.pattern, true, false);
				}
				else
				{
					sqlString = spatialDialect.GetSpatialRelateString(column1, column2, column3, false, false);
				}
			}
			return new SqlStringBuilder()
				.Add(sqlString)
				.Add(" as y")
				.Add(position.ToString())
				.Add("_")
				.ToSqlString();
		}
		public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary<string, IFilter> enabledFilters)
		{
			//TODO: add default capacity
			SqlStringBuilder sqlBuilder = new SqlStringBuilder();
			SqlString[] columnNames =
				CriterionUtil.GetColumnNames(propertyName, projection, criteriaQuery, criteria, enabledFilters);

			if (columnNames.Length != 1)
			{
				throw new HibernateException("insensitive like may only be used with single-column properties");
			}

			if (criteriaQuery.Factory.Dialect is PostgreSQLDialect)
			{
				sqlBuilder.Add(columnNames[0]);
				sqlBuilder.Add(" ilike ");
			}
			else
			{
				sqlBuilder.Add(criteriaQuery.Factory.Dialect.LowercaseFunction)
					.Add("(")
					.Add(columnNames[0])
					.Add(")")
					.Add(" like ");
			}

			sqlBuilder.AddParameter();

			return sqlBuilder.ToSqlString();
		}
		public override TypedValue[] GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery)
		{
			if (_projection != null)
				return _projection.GetTypedValues(criteria, criteriaQuery);
			
			return new TypedValue[] {criteriaQuery.GetTypedIdentifierValue(criteria, value)};
		}
		public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary<string, IFilter> enabledFilters)
		{
			//TODO: add default capacity
			SqlStringBuilder sqlBuilder = new SqlStringBuilder();

			SqlString[] columnNames =
				CriterionUtil.GetColumnNames(_propertyName, _projection, criteriaQuery, criteria, enabledFilters);

			bool opNeeded = false;

			for (int i = 0; i < columnNames.Length; i++)
			{
				if (opNeeded)
				{
					sqlBuilder.Add(" or ");
				}
				opNeeded = true;

				sqlBuilder.Add(columnNames[i])
					.Add(" is not null");
			}

			if (columnNames.Length > 1)
			{
				sqlBuilder.Insert(0, "(");
				sqlBuilder.Add(")");
			}

			return sqlBuilder.ToSqlString();
		}
Пример #9
0
		public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery,
											  IDictionary<string, IFilter> enabledFilters)
		{
			SqlString[] columnNames =
				CriterionUtil.GetColumnNames(_lhsPropertyName, _lhsProjection, criteriaQuery, criteria, enabledFilters);
			SqlString[] otherColumnNames =
				CriterionUtil.GetColumnNames(_rhsPropertyName, _rhsProjection, criteriaQuery, criteria, enabledFilters);

			SqlStringBuilder sb = new SqlStringBuilder();
			if (columnNames.Length > 1)
			{
				sb.Add(StringHelper.OpenParen);
			}
			bool first = true;
			foreach (SqlString sqlString in StringHelper.Add(columnNames, Op, otherColumnNames))
			{
				if (first == false)
				{
					sb.Add(" and ");
				}
				first = false;
				sb.Add(sqlString);
			}

			if (columnNames.Length > 1)
			{
				sb.Add(StringHelper.ClosedParen);
			}

			return sb.ToSqlString();
		}
 private static SqlString GetProjectionArgument(ICriteriaQuery criteriaQuery, ICriteria criteria,
                                                IProjection projection, int loc,
                                                IDictionary<string, IFilter> enabledFilters)
 {
     SqlString sql = projection.ToSqlString(criteria, loc, criteriaQuery, enabledFilters);
     return sql.Substring(0, sql.LastIndexOfCaseInsensitive(" as "));
 }
Пример #11
0
		public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery, IDictionary<string, IFilter> enabledFilters)
		{
			return new SqlString(
				criteriaQuery.NewQueryParameter(typedValue).Single(),
				" as ",
				GetColumnAliases(position, criteria, criteriaQuery)[0]);
		}
Пример #12
0
		public override TypedValue[] GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery)
		{
			if (projection == null)
				return NoValues;
			else
				return projection.GetTypedValues(criteria, criteriaQuery);
		}
Пример #13
0
        public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary<string, IFilter> enabledFilters)
        {
            if (_criteria.Count == 0)
            {
                return EmptyExpression;
            }

            //TODO: add default capacity
            SqlStringBuilder sqlBuilder = new SqlStringBuilder();

            sqlBuilder.Add("(");

            for (int i = 0; i < _criteria.Count - 1; i++)
            {
                sqlBuilder.Add(
                    ((ICriterion) _criteria[i]).ToSqlString(criteria, criteriaQuery, enabledFilters));
                sqlBuilder.Add(Op);
            }

            sqlBuilder.Add(
                ((ICriterion) _criteria[_criteria.Count - 1]).ToSqlString(criteria, criteriaQuery, enabledFilters));

            sqlBuilder.Add(")");

            return sqlBuilder.ToSqlString();
        }
		public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery,
		                                      IDictionary<string, IFilter> enabledFilters)
		{
			ISQLFunction sqlFunction = GetFunction(criteriaQuery);
			List<string> tokens = new List<string>();
			string replacemenToken = Guid.NewGuid().ToString("n");
			for (int i = 0; i < args.Length; i++)
			{
				tokens.Add(replacemenToken);
			}
			string functionStatement = sqlFunction.Render(tokens, criteriaQuery.Factory).ToString();
			string[] splitted = functionStatement.Split(new string[] {replacemenToken}, StringSplitOptions.RemoveEmptyEntries);

			SqlStringBuilder sb = new SqlStringBuilder();
			for (int i = 0; i < splitted.Length; i++)
			{
				sb.Add(splitted[i]);
				if (i < args.Length)
				{
					int loc = (position + 1) * 1000 + i;
					SqlString projectArg = GetProjectionArgument(criteriaQuery, criteria, args[i], loc, enabledFilters);
					sb.Add(projectArg);
				}
			}
			sb.Add(" as ");
			sb.Add(GetColumnAliases(position)[0]);
			return sb.ToSqlString();
		}
		public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary<string, IFilter> enabledFilters)
		{
			//Implementation changed from H3.2 to use SqlString
			string[] columns = criteriaQuery.GetIdentifierColumns(criteria);
			SqlStringBuilder result = new SqlStringBuilder(4 * columns.Length + 2);
			if (columns.Length > 1)
			{
				result.Add(StringHelper.OpenParen);
			}

			for (int i = 0; i < columns.Length; i++)
			{
				if (i > 0)
				{
					result.Add(" and ");
				}

				result.Add(columns[i])
					.Add(" = ");

				AddValueOrProjection(criteria, criteriaQuery, enabledFilters, result);
			}

			if (columns.Length > 1)
			{
				result.Add(StringHelper.ClosedParen);
			}
			return result.ToSqlString();
		}
		/// <summary>
		/// Render a SqlString for the expression.
		/// </summary>
		/// <param name="criteria"></param>
		/// <param name="criteriaQuery"></param>
		/// <param name="enabledFilters"></param>
		/// <returns>
		/// A SqlString that contains a valid Sql fragment.
		/// </returns>
		public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary<string, IFilter> enabledFilters)
		{
			criteriaQuery.AddUsedTypedValues(GetTypedValues(criteria, criteriaQuery));
			ISpatialDialect spatialDialect = (ISpatialDialect)criteriaQuery.Factory.Dialect;
			string[] columnsUsingProjection = criteriaQuery.GetColumnsUsingProjection(criteria, this.propertyName);
			IType typeUsingProjection = criteriaQuery.GetTypeUsingProjection(criteria, this.propertyName);
			if (typeUsingProjection.ReturnedClass != typeof(IGeometry))
			{
				throw new QueryException(string.Format("Type mismatch in {0}: {1} expected type {2}, actual type {3}", GetType(), this.propertyName, typeof(IGeometry), typeUsingProjection.ReturnedClass));
			}
			if (typeUsingProjection.IsCollectionType)
			{
				throw new QueryException(string.Format("cannot use collection property ({0}.{1}) directly in a criterion, use ICriteria.CreateCriteria instead", criteriaQuery.GetEntityName(criteria), this.propertyName));
			}
			SqlStringBuilder builder = new SqlStringBuilder(2 * columnsUsingProjection.Length);
			for (int i = 0; i < columnsUsingProjection.Length; i++)
			{
				if (i > 0)
				{
					builder.Add(" AND ");
				}
				builder.Add(spatialDialect.GetSpatialValidationString(columnsUsingProjection[i], this.validation, true));
			}
			return builder.ToSqlString();
		}
 private static SqlString GetProjectionArgument(ICriteriaQuery criteriaQuery, ICriteria criteria,
                                                IProjection projection, int loc,
                                                IDictionary<string, IFilter> enabledFilters)
 {
     SqlString sql = projection.ToSqlString(criteria, loc, criteriaQuery, enabledFilters);
     return StringHelper.RemoveAsAliasesFromSql(sql);
 }
		/// <summary>
		/// Render a SqlString for the expression.
		/// </summary>
		/// <param name="criteria"></param>
		/// <param name="criteriaQuery"></param>
		/// <param name="enabledFilters"></param>
		/// <returns>
		/// A SqlString that contains a valid Sql fragment.
		/// </returns>
		public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary<string, IFilter> enabledFilters)
		{
			criteriaQuery.AddUsedTypedValues(GetTypedValues(criteria, criteriaQuery));
			ISpatialDialect spatialDialect = (ISpatialDialect)criteriaQuery.Factory.Dialect;
			string[] columns1 = GetColumnNames(criteria, criteriaQuery, this.propertyName);
			string[] columns2 = null;
			if (!(this.anotherGeometry is IGeometry))
			{
				columns2 = GetColumnNames(criteria, criteriaQuery, (string)this.anotherGeometry);
			}

			SqlStringBuilder builder = new SqlStringBuilder(10 * columns1.Length);
			for (int i = 0; i < columns1.Length; i++)
			{
				if (i > 0)
				{
					builder.Add(" AND ");
				}
				if (this.anotherGeometry is IGeometry)
				{
					builder.Add(spatialDialect.GetSpatialRelationString(columns1[i], this.relation, Parameter.Placeholder, true));
				}
				else
				{
					builder.Add(spatialDialect.GetSpatialRelationString(columns1[i], this.relation, columns2[i], true));
				}
			}
			return builder.ToSqlString();
		}
		public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary<string, IFilter> enabledFilters)
		{
			string entityName = criteriaQuery.GetEntityName(criteria, propertyName);
			string actualPropertyName = criteriaQuery.GetPropertyName(propertyName);
			string sqlAlias = criteriaQuery.GetSQLAlias(criteria, propertyName);

			ISessionFactoryImplementor factory = criteriaQuery.Factory;
			IQueryableCollection collectionPersister = GetQueryableCollection(entityName, actualPropertyName, factory);

			string[] collectionKeys = collectionPersister.KeyColumnNames;
			string[] ownerKeys = ((ILoadable)factory.GetEntityPersister(entityName)).IdentifierColumnNames;

			StringBuilder innerSelect = new StringBuilder();
			innerSelect.Append("(select 1 from ")
				.Append(collectionPersister.TableName)
				.Append(" where ")
				.Append(
				new ConditionalFragment().SetTableAlias(sqlAlias).SetCondition(ownerKeys, collectionKeys).ToSqlStringFragment());
			if (collectionPersister.HasWhere)
			{
				innerSelect.Append(" and (")
					.Append(collectionPersister.GetSQLWhereString(collectionPersister.TableName))
					.Append(") ");
			}

			innerSelect.Append(")");

			return new SqlString(new string[] {ExcludeEmpty ? "exists" : "not exists", innerSelect.ToString()});
		}
		public override TypedValue[] GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery)
		{
			if (projection != null)
				return projection.GetTypedValues(criteria, criteriaQuery);
			
			return base.GetTypedValues(criteria, criteriaQuery);
		}
Пример #21
0
		public SqlString ToSqlString(ICriteria criteria, int loc, ICriteriaQuery criteriaQuery, IDictionary<string, IFilter> enabledFilters)
		{
			//SqlString result = new SqlString(criteriaQuery.GetSQLAlias(criteria));
			//result.Replace(sql, "{alias}");
			//return result;
			return new SqlString(StringHelper.Replace(sql, "{alias}", criteriaQuery.GetSQLAlias(criteria)));
		}
Пример #22
0
		public override IType[] GetTypes(ICriteria criteria, ICriteriaQuery criteriaQuery)
		{
			IType[] trueTypes = whenTrue.GetTypes(criteria, criteriaQuery);
			IType[] falseTypes = whenFalse.GetTypes(criteria, criteriaQuery);

			bool areEqual = trueTypes.Length == falseTypes.Length;
			if (trueTypes.Length == falseTypes.Length)
			{
				for (int i = 0; i < trueTypes.Length; i++)
				{
					if(trueTypes[i] != falseTypes[i])
					{
						areEqual = false;
						break;
					}
				}
			}
			if(areEqual == false)
			{
				string msg = "Both true and false projections must return the same types."+ Environment.NewLine +
				             "But True projection returns: ["+StringHelper.Join(", ", trueTypes) +"] "+ Environment.NewLine+
				             "And False projection returns: ["+StringHelper.Join(", ", falseTypes)+ "]";

				throw new HibernateException(msg);
			}

			return trueTypes;
		}
		public override TypedValue[] GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery)
		{
			return new TypedValue[]
				{
					criteriaQuery.GetTypedValue(criteria, _propertyName, _value.ToString().ToLower())
				};
		}
Пример #24
0
		private static SqlString[] GetColumnNamesUsingPropertyName(
			ICriteriaQuery criteriaQuery, 
			ICriteria criteria, 
			string propertyName, 
			object value, 
			ICriterion critertion)
		{
			string[] columnNames = criteriaQuery.GetColumnsUsingProjection(criteria, propertyName);
			IType propertyType = criteriaQuery.GetTypeUsingProjection(criteria, propertyName);

			if (value != null && !(value is System.Type) && !propertyType.ReturnedClass.IsInstanceOfType(value))
			{
				throw new QueryException(string.Format(
											"Type mismatch in {0}: {1} expected type {2}, actual type {3}",
											critertion.GetType(), propertyName, propertyType.ReturnedClass, value.GetType()));
			}

			if (propertyType.IsCollectionType)
			{
				throw new QueryException(string.Format(
											"cannot use collection property ({0}.{1}) directly in a criterion,"
											+ " use ICriteria.CreateCriteria instead",
											criteriaQuery.GetEntityName(criteria), propertyName));
			}
			return Array.ConvertAll<string, SqlString>(columnNames, delegate(string col)
			{
				return new SqlString(col);
			});
		}
Пример #25
0
		public SqlString ToSqlString(ICriteria criteria, int loc, ICriteriaQuery criteriaQuery)
		{
			//SqlString result = new SqlString(criteriaQuery.GetSQLAlias(criteria));
			//result.Replace(sql, "{alias}");
			//return result;
			return new SqlString(StringHelper.Replace(sql, "{alias}", criteriaQuery.GetSQLAlias(criteria)));
		}
		public CriteriaQueryTranslator(ISessionFactoryImplementor factory, CriteriaImpl criteria, string rootEntityName,
									   string rootSQLAlias, ICriteriaQuery outerQuery)
			: this(factory, criteria, rootEntityName, rootSQLAlias)
		{
			outerQueryTranslator = outerQuery;
			collectedParameterSpecifications = outerQuery.CollectedParameterSpecifications;
			namedParameters = outerQuery.CollectedParameters;
		}
Пример #27
0
 public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery, IDictionary<string, IFilter> enabledFilters)
 {
     return new SqlStringBuilder()
         .Add(" RAND() ")
         .Add(" as ")
         .Add(GetColumnAliases(position)[0])
         .ToSqlString();
 }
Пример #28
0
		public override TypedValue[] GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery)
		{
			List<TypedValue> tv = new List<TypedValue>();
			tv.AddRange(criterion.GetTypedValues(criteria, criteriaQuery));
			tv.AddRange(whenTrue.GetTypedValues(criteria, criteriaQuery));
			tv.AddRange(whenFalse.GetTypedValues(criteria, criteriaQuery));
			return tv.ToArray();
		}
Пример #29
0
		public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery, IDictionary<string, IFilter> enabledFilters)
		{
			return new SqlStringBuilder()
				.Add(criteriaQuery.NewQueryParameter(typedValue).Single())
				.Add(" as ")
				.Add(GetColumnAliases(position)[0])
				.ToSqlString();
		}
Пример #30
0
		public override TypedValue[] GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery)
		{
			TypedValue[] superTv = base.GetTypedValues(criteria, criteriaQuery);
			TypedValue[] result = new TypedValue[superTv.Length + 1];
			superTv.CopyTo(result, 1);
			result[0] = new TypedValue(GetTypes()[0], value, EntityMode.Poco);
			return result;
		}
Пример #31
0
 public override TypedValue[] GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery)
 {
     if (_lhsProjection == null && _rhsProjection == null)
     {
         return(NoTypedValues);
     }
     else
     {
         List <TypedValue> types = new List <TypedValue>();
         if (_lhsProjection != null)
         {
             types.AddRange(_lhsProjection.GetTypedValues(criteria, criteriaQuery));
         }
         if (_rhsProjection != null)
         {
             types.AddRange(_rhsProjection.GetTypedValues(criteria, criteriaQuery));
         }
         return(types.ToArray());
     }
 }
Пример #32
0
        public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery,
                                              IDictionary <string, IFilter> enabledFilters)
        {
            ISQLFunction sqlFunction = GetFunction(criteriaQuery);

            var arguments = new ArrayList();

            for (int i = 0; i < args.Length; i++)
            {
                SqlString projectArg = GetProjectionArgument(criteriaQuery, criteria, args[i], 0, enabledFilters); // The loc parameter is unused.
                arguments.Add(projectArg);
            }

            SqlStringBuilder sb = new SqlStringBuilder();

            sb.Add(sqlFunction.Render(arguments, criteriaQuery.Factory));
            sb.Add(" as ");
            sb.Add(GetColumnAliases(position)[0]);
            return(sb.ToSqlString());
        }
Пример #33
0
        public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery)
        {
            var columnNames = GetColumnNames(_propertyName, _projection, criteriaQuery, criteria, this, _value);

            var typedValue = GetParameterTypedValue(criteria, criteriaQuery);
            var parameters = criteriaQuery.NewQueryParameter(typedValue).ToArray();

            var sqlBuilder     = new SqlStringBuilder(4 * columnNames.Length);
            var columnNullness = typedValue.Type.ToColumnNullness(typedValue.Value, criteriaQuery.Factory);

            if (columnNullness.Length != columnNames.Length)
            {
                throw new AssertionFailure("Column nullness length doesn't match number of columns.");
            }

            for (int i = 0; i < columnNames.Length; i++)
            {
                if (i > 0)
                {
                    sqlBuilder.Add(" and ");
                }

                if (columnNullness[i])
                {
                    if (_inverse)
                    {
                        sqlBuilder.Add(parameters[i]).Add(Op).Add(columnNames[i]);
                    }
                    else
                    {
                        sqlBuilder.Add(columnNames[i]).Add(Op).Add(parameters[i]);
                    }
                }
                else
                {
                    sqlBuilder.Add(columnNames[i]).Add(" is null ");
                }
            }

            return(sqlBuilder.ToSqlString());
        }
Пример #34
0
        /// <summary>
        /// Render the SQL fragment
        /// </summary>
        public virtual SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery)
        {
            if (projection != null)
            {
                SqlString produced  = projection.ToSqlString(criteria, 0, criteriaQuery);
                SqlString truncated = SqlStringHelper.RemoveAsAliasesFromSql(produced);
                return(new SqlString(truncated, ascending ? " asc" : " desc"));
            }

            string[]   columns = criteriaQuery.GetColumnAliasesUsingProjection(criteria, propertyName);
            Type.IType type    = criteriaQuery.GetTypeUsingProjection(criteria, propertyName);

            StringBuilder fragment             = new StringBuilder();
            ISessionFactoryImplementor factory = criteriaQuery.Factory;

            for (int i = 0; i < columns.Length; i++)
            {
                bool lower = ignoreCase && IsStringType(type.SqlTypes(factory)[i]);

                if (lower)
                {
                    fragment.Append(factory.Dialect.LowercaseFunction)
                    .Append("(");
                }
                fragment.Append(columns[i]);

                if (lower)
                {
                    fragment.Append(")");
                }

                fragment.Append(ascending ? " asc" : " desc");

                if (i < columns.Length - 1)
                {
                    fragment.Append(", ");
                }
            }

            return(new SqlString(fragment.ToString()));
        }
Пример #35
0
        public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery,
                                              IDictionary <string, IFilter> enabledFilters)
        {
            var columns = CriterionUtil.GetColumnNames(_propertyName, _projection, criteriaQuery, criteria,
                                                       enabledFilters);

            if (columns.Length != 1)
            {
                throw new HibernateException(
                          "IsDescendantOf may only be used with single-column properties / projections.");
            }

            var lhs = new SqlStringBuilder(6);

            lhs.Add(columns[0]);
            lhs.Add(".IsDescendantOf(");
            lhs.Add(criteriaQuery.NewQueryParameter(_typedValue).Single());
            lhs.Add(") = 1");

            return(lhs.ToSqlString());
        }
Пример #36
0
 public override SqlString ToSqlString(ICriteria criteria, int loc, ICriteriaQuery criteriaQuery,
                                       IDictionary <string, IFilter> enabledFilters)
 {
     if (projection != null)
     {
         return
             (new SqlString(new object[]
         {
             aggregate, "(",
             StringHelper.RemoveAsAliasesFromSql(projection.ToSqlString(criteria, loc, criteriaQuery,
                                                                        enabledFilters)), ") as y",
             loc.ToString(), "_"
         }));
     }
     else
     {
         return
             (new SqlString(new object[]
                            { aggregate, "(", criteriaQuery.GetColumn(criteria, propertyName), ") as y", loc.ToString(), "_" }));
     }
 }
Пример #37
0
        /// <summary>
        /// Determine the type of the elements in the IN clause.
        /// </summary>
        private IType GetElementType(ICriteria criteria, ICriteriaQuery criteriaQuery)
        {
            if (_projection == null)
            //return criteriaQuery.GetTypeUsingProjection(criteria, _propertyName);
            {
                //把计㏕﹚肚String篈
                if (this._values[0].ToString().Length > 4000)
                {
                    return(NHibernateUtil.StringClob);
                }
                return(NHibernateUtil.String);
            }

            IType[] types = _projection.GetTypes(criteria, criteriaQuery);
            if (types.Length != 1)
            {
                throw new QueryException("Cannot use projections that return more than a single column with InExpression");
            }

            return(types[0]);
        }
Пример #38
0
        public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters)
        {
            var loc = position * GetHashCode();
            var val = _projection.ToSqlString(criteria, loc, criteriaQuery, enabledFilters);

            val = HierarchyIdStringHelper.RemoveAsAliasesFromSql(val);

            var lhs = new SqlStringBuilder();

            lhs.Add(val);
            lhs.Add(".GetDescendant(");
            lhs.Add(criteriaQuery.NewQueryParameter(new TypedValue(NHibernateUtil.String, _child1, EntityMode.Poco)).Single());
            lhs.Add(" , ");
            lhs.Add(criteriaQuery.NewQueryParameter(new TypedValue(NHibernateUtil.String, _child2, EntityMode.Poco)).Single());
            lhs.Add(") as ");
            lhs.Add(GetColumnAliases(position)[0]);

            var ret = lhs.ToSqlString();

            return(ret);
        }
Пример #39
0
        public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery)
        {
            var loc = position * GetHashCode();
            var val = _projection.ToSqlString(criteria, loc, criteriaQuery);

            val = GetAncestorProjection.RemoveAsAliasesFromSql(val);

            var lhs = new SqlStringBuilder();

            lhs.Add(val);
            lhs.Add(".GetReparentedValue(");
            lhs.Add(criteriaQuery.NewQueryParameter(new TypedValue(NHibernateUtil.String, _oldRoot, false)).Single());
            lhs.Add(" , ");
            lhs.Add(criteriaQuery.NewQueryParameter(new TypedValue(NHibernateUtil.String, _newRoot, false)).Single());
            lhs.Add(") as ");
            lhs.Add(GetColumnAliases(position)[0]);

            var ret = lhs.ToSqlString();

            return(ret);
        }
Пример #40
0
        public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery,
                                              IDictionary <string, IFilter> enabledFilters)
        {
            InitializeInnerQueryAndParameters(criteriaQuery);

            if (innerQuery.HasProjection == false)
            {
                throw new QueryException("Cannot use subqueries on a criteria without a projection.");
            }

            ISessionFactoryImplementor factory = criteriaQuery.Factory;

            IOuterJoinLoadable persister = (IOuterJoinLoadable)factory.GetEntityPersister(criteriaImpl.EntityOrClassName);

            //buffer needs to be before CriteriaJoinWalker for sake of parameter order
            SqlStringBuilder buf = new SqlStringBuilder().Add(ToLeftSqlString(criteria, criteriaQuery));

            //patch to generate joins on subqueries
            //stolen from CriteriaLoader
            CriteriaJoinWalker walker =
                new CriteriaJoinWalker(persister, innerQuery, factory, criteriaImpl, criteriaImpl.EntityOrClassName, enabledFilters);

            SqlString sql = walker.SqlString;

            if (criteriaImpl.FirstResult != 0 || criteriaImpl.MaxResults != RowSelection.NoValue)
            {
                sql = factory.Dialect.GetLimitString(sql, criteriaImpl.FirstResult, criteriaImpl.MaxResults);
            }

            if (op != null)
            {
                buf.Add(" ").Add(op).Add(" ");
            }

            if (quantifier != null)
            {
                buf.Add(quantifier).Add(" ");
            }
            return(buf.Add("(").Add(sql).Add(")").ToSqlString());
        }
Пример #41
0
        public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery,
                                              IDictionary <string, IFilter> enabledFilters)
        {
            string    alias      = null;
            Type      targetType = null;
            ICriteria aliasedCriteria;

            if (string.IsNullOrEmpty(_alias))
            {
                alias = criteriaQuery.GetSQLAlias(criteria);
                string entityName = criteriaQuery.GetEntityName(criteria);
                targetType = criteriaQuery.Factory.GetEntityPersister(entityName).GetMappedClass(EntityMode.Poco);
            }
            else if ((aliasedCriteria = criteria.GetCriteriaByAlias(_alias)) != null)
            {
                alias = criteriaQuery.GetSQLAlias(aliasedCriteria);
                string entityName = criteriaQuery.GetEntityName(aliasedCriteria);
                targetType = criteriaQuery.Factory.GetEntityPersister(entityName).GetMappedClass(EntityMode.Poco);
            }

            if (targetType == null || !targetType.IsAssignableFrom(_entityClass))
            {
                return(new SqlString("1=0"));
            }

            IQueryable queryable = ObtainQueryable(criteriaQuery);
            string     condition = queryable.FilterFragment(alias, enabledFilters);

            if (condition.IndexOf(" and ", StringComparison.InvariantCultureIgnoreCase) == 0)
            {
                condition = condition.Substring(5);
            }

            if (condition == string.Empty)
            {
                condition = "1=1";
            }

            return(new SqlString(condition));
        }
Пример #42
0
        public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery)
        {
            var sqlBuilder = new SqlStringBuilder(5 + (_cases.Length * 4));

            sqlBuilder.Add("(case");

            foreach (var projectionCase in _cases)
            {
                sqlBuilder.Add(" when ");
                sqlBuilder.Add(projectionCase.Criterion.ToSqlString(criteria, criteriaQuery));
                sqlBuilder.Add(" then ");
                sqlBuilder.AddObject(CriterionUtil.GetColumnNameAsSqlStringPart(projectionCase.Projection, criteriaQuery, criteria));
            }

            sqlBuilder.Add(" else ");
            sqlBuilder.AddObject(CriterionUtil.GetColumnNameAsSqlStringPart(_elseProjection, criteriaQuery, criteria));

            sqlBuilder.Add(" end) as ");
            sqlBuilder.Add(GetColumnAlias(position));

            return(sqlBuilder.ToSqlString());
        }
Пример #43
0
 public static SqlString[] GetColumnNamesForSimpleExpression(
     string propertyName,
     IProjection projection,
     ICriteriaQuery criteriaQuery,
     ICriteria criteria,
     ICriterion criterion,
     object value)
 {
     if (projection == null)
     {
         return(GetColumnNamesUsingPropertyName(
                    criteriaQuery,
                    criteria,
                    propertyName,
                    value,
                    criterion));
     }
     else
     {
         return(GetColumnNamesUsingProjection(projection, criteriaQuery, criteria));
     }
 }
Пример #44
0
    public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters)
    {
        SqlString[] columns = CriterionUtil.GetColumnNames(null, _projection, criteriaQuery, criteria, enabledFilters);
        if (columns.Length != 1)
        {
            throw new HibernateException("Like may only be used with single-column properties / projections.");
        }
        var value   = SqlStringHelper.RemoveAsAliasesFromSql(_value.ToSqlString(criteria, 0, criteriaQuery, enabledFilters));
        var dialect = criteriaQuery.Factory.Dialect;
        var builder = new SqlStringBuilder(8)
                      .Add(dialect.LowercaseFunction)
                      .Add(StringHelper.OpenParen)
                      .Add(columns[0])
                      .Add(StringHelper.ClosedParen)
                      .Add(" like ")
                      .Add(dialect.LowercaseFunction)
                      .Add(StringHelper.OpenParen)
                      .Add(value)
                      .Add(StringHelper.ClosedParen);

        return(builder.ToSqlString());
    }
        /// <summary>
        /// Render the SQL Fragment.
        /// </summary>
        /// <param name="criteria"></param>
        /// <param name="position"></param>
        /// <param name="criteriaQuery"></param>
        /// <param name="enabledFilters"></param>
        /// <returns></returns>
        public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters)
        {
            ISpatialDialect spatialDialect = (ISpatialDialect)criteriaQuery.Factory.Dialect;
            string          column1        = criteriaQuery.GetColumn(criteria, this.propertyName);
            SqlString       sqlString;

            if (this.IsBinaryOperation())
            {
                string column2 = criteriaQuery.GetColumn(criteria, this.anotherPropertyName);
                sqlString = spatialDialect.GetSpatialAnalysisString(column1, this.analysis, column2);
            }
            else
            {
                sqlString = spatialDialect.GetSpatialAnalysisString(column1, this.analysis, this.arguments);
            }
            return(new SqlStringBuilder()
                   .Add(sqlString)
                   .Add(" as y")
                   .Add(position.ToString())
                   .Add("_")
                   .ToSqlString());
        }
Пример #46
0
        public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery)
        {
            SqlStringBuilder sb = new SqlStringBuilder();

            sb.Add("(");

            for (int i = 0; i < args.Length; i++)
            {
                int       loc        = (position + 1) * 1000 + i;
                SqlString projectArg = GetProjectionArgument(criteriaQuery, criteria, args[i], loc);
                sb.Add(projectArg);

                if (i < args.Length - 1)
                {
                    sb.Add(Op);
                }
            }
            sb.Add(")");
            sb.Add(" as ");
            sb.Add(GetColumnAliases(position)[0]);
            return(sb.ToSqlString());
        }
Пример #47
0
        public override SqlString ToSqlString(ICriteria criteria, int loc, ICriteriaQuery criteriaQuery)
        {
            ISessionFactoryImplementor factory = criteriaQuery.Factory;

            SqlType[] sqlTypeCodes = NHibernateUtil.Double.SqlTypes(factory);
            string    sqlType      = factory.Dialect.GetCastTypeName(sqlTypeCodes[0]);

            var sql = new SqlStringBuilder().Add(aggregate).Add("(");

            sql.Add("cast(");
            if (projection != null)
            {
                sql.Add(SqlStringHelper.RemoveAsAliasesFromSql(projection.ToSqlString(criteria, loc, criteriaQuery)));
            }
            else
            {
                sql.Add(criteriaQuery.GetColumn(criteria, propertyName));
            }
            sql.Add(" as ").Add(sqlType).Add(")");
            sql.Add(") as ").Add(GetColumnAliases(loc, criteria, criteriaQuery)[0]);
            return(sql.ToSqlString());
        }
Пример #48
0
        /// <summary>
        ///     Generates the <see cref="SqlString" /> object (SQL fragment for the select list) the same way as
        ///     <see cref="ProjectionList.ToSqlString" /> does, but with the slight difference of omitting group by-only
        ///     <see cref="FqGroupByProjection" /> projections.
        /// </summary>
        /// <param name="criteria">
        ///     The criteria.
        /// </param>
        /// <param name="position">
        ///     The position.
        /// </param>
        /// <param name="criteriaQuery">
        ///     The criteria query.
        /// </param>
        /// <param name="enabledFilters">
        ///     The enabled filters.
        /// </param>
        /// <returns>
        ///     The generated <see cref="SqlString" /> object.
        /// </returns>
        public SqlString ToSqlString
        (
            ICriteria criteria,
            int position,
            ICriteriaQuery criteriaQuery,
            IDictionary <string, IFilter> enabledFilters
        )
        {
            var buffer = new SqlStringBuilder();

            bool lastHadValue = false;

            foreach (IProjection projection in _elements)
            {
                SqlString value = projection.ToSqlString(criteria, position, criteriaQuery, enabledFilters);

                bool hasValue = value.Length > 0;

                if (hasValue)
                {
                    if (lastHadValue)
                    {
                        buffer.Add(", ");
                    }

                    string[] aliases = projection
                                       .GetColumnAliases(position, criteria, criteriaQuery);

                    position += aliases.Length;

                    buffer.Add(value);
                }

                lastHadValue = hasValue;
            }

            return(buffer.ToSqlString());
        }
Пример #49
0
        /// <summary>
        /// Render a SqlString for the expression.
        /// </summary>
        /// <param name="criteria"></param>
        /// <param name="criteriaQuery"></param>
        /// <returns>
        /// A SqlString that contains a valid Sql fragment.
        /// </returns>
        public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery)
        {
            string[] columnNames = criteriaQuery.GetColumnsUsingProjection(criteria, this.propertyName);

            ISpatialDialect spatialDialect = (ISpatialDialect)criteriaQuery.Factory.Dialect;

            IType typeUsingProjection = criteriaQuery.GetTypeUsingProjection(criteria, this.propertyName);

            if (typeUsingProjection.IsCollectionType)
            {
                throw new QueryException(string.Format("cannot use collection property ({0}.{1}) directly in a criterion, use ICriteria.CreateCriteria instead", criteriaQuery.GetEntityName(criteria), this.propertyName));
            }
            string[] keyColumns = criteriaQuery.GetIdentifierColumns(criteria);

            Parameter[] parameters = criteriaQuery.NewQueryParameter(this.GetTypedValues(criteria, criteriaQuery)[0]).ToArray();

            string entityType = criteriaQuery.GetEntityName(criteria, this.propertyName);
            AbstractEntityPersister entityPersister = (AbstractEntityPersister)criteriaQuery.Factory.GetEntityPersister(entityType);

            // Only one key column is assumed
            string keyColumn   = keyColumns[0];
            string alias       = criteriaQuery.GetSQLAlias(criteria, this.propertyName);
            string tableName   = entityPersister.TableName;
            int    aliasLength = alias.Length + 1;

            SqlStringBuilder sqlBuilder = new SqlStringBuilder(10 * columnNames.Length);

            for (int i = 0; i < columnNames.Length; i++)
            {
                if (i > 0)
                {
                    sqlBuilder.Add(" AND ");
                }
                string geometryColumn = columnNames[i].Remove(0, aliasLength);
                sqlBuilder.Add(spatialDialect.GetSpatialFilterString(alias, geometryColumn, keyColumn, tableName, parameters.Single()));
            }
            return(sqlBuilder.ToSqlString());
        }
        public virtual TypedValue[] GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery)
        {
            var values = new List <TypedValue>();

            if (ParameterValues != null)
            {
                for (int i = 0; i < ParameterValues.Length; i++)
                {
                    values.Add(new TypedValue(TypeFactory.HeuristicType(ParameterTypes[i].Name), ParameterValues[i], EntityMode.Poco));
                }
            }
            if (ReturnType != null && InnerCriterion is SimpleExpression)
            {
                var simple = InnerCriterion as SimpleExpression;
                values.Add(new TypedValue(TypeFactory.HeuristicType(ReturnType.Name), simple.Value, EntityMode.Poco));
            }
            if (RightFunction != null)
            {
                values.AddRange(RightFunction.GetTypedValues(criteria, criteriaQuery));
            }

            return(values.ToArray());
        }
Пример #51
0
        public override SqlString ToSqlString(ICriteria criteria, int loc, ICriteriaQuery criteriaQuery,
                                              IDictionary <string, IFilter> enabledFilters)
        {
            ISessionFactoryImplementor factory = criteriaQuery.Factory;

            SqlType[] sqlTypeCodes = NHibernateUtil.Double.SqlTypes(factory);
            string    sqlType      = factory.Dialect.GetCastTypeName(sqlTypeCodes[0]);
            string    parameter;

            if (projection != null)
            {
                parameter =
                    StringHelper.RemoveAsAliasesFromSql(projection.ToSqlString(criteria, loc, criteriaQuery, enabledFilters)).ToString();
            }
            else
            {
                parameter = criteriaQuery.GetColumn(criteria, propertyName);
            }
            string expression = string.Format("{0}(cast({1} as {2})) as {3}", aggregate, parameter, sqlType,
                                              GetColumnAliases(loc)[0]);

            return(new SqlString(expression));
        }
Пример #52
0
        public override SqlString ToSqlString(ICriteria criteria, int position, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters)
        {
            SqlString condition = criterion.ToSqlString(criteria, criteriaQuery, enabledFilters);
            SqlString ifTrue    = whenTrue.ToSqlString(criteria, position + GetHashCode() + 1, criteriaQuery, enabledFilters);

            ifTrue = StringHelper.RemoveAsAliasesFromSql(ifTrue);
            SqlString ifFalse = whenFalse.ToSqlString(criteria, position + GetHashCode() + 2, criteriaQuery, enabledFilters);

            ifFalse = StringHelper.RemoveAsAliasesFromSql(ifFalse);
            return(new SqlStringBuilder()
                   .Add("(")
                   .Add("case when ")
                   .Add(condition)
                   .Add(" then ")
                   .Add(ifTrue)
                   .Add(" else ")
                   .Add(ifFalse)
                   .Add(" end")
                   .Add(")")
                   .Add(" as ")
                   .Add(GetColumnAliases(position)[0])
                   .ToSqlString());
        }
        public virtual SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery,
                                             IDictionary <string, IFilter> enabledFilters)
        {
            var    sql = new SqlStringBuilder();
            string leftPropertyName  = null;
            string rightPropertyName = null;

            if (InnerCriterion is SimpleExpression)
            {
                leftPropertyName = ((SimpleExpression)InnerCriterion).PropertyName;
            }
            else if (InnerCriterion is PropertyExpression)
            {
                System.Type type = typeof(PropertyExpression);
                leftPropertyName =
                    type.GetField("_lhsPropertyName", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(InnerCriterion) as
                    String;
                rightPropertyName =
                    type.GetField("_rhsPropertyName", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(InnerCriterion) as
                    String;
            }

            AddParameters(leftPropertyName, sql, criteria, criteriaQuery);
            sql.Add(" ").Add(Op).Add(" ");

            if (RightFunction != null)
            {
                RightFunction.AddParameters(rightPropertyName, sql, criteria, criteriaQuery);
            }
            else
            {
                sql.AddParameter();
            }

            return(sql.ToSqlString());
        }
Пример #54
0
    public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters)
    {
        if (_values.Length == 0)
        {
            return(new SqlString("1=0"));
        }

        var result      = new SqlStringBuilder();
        var columnNames = CriterionUtil.GetColumnNames(null, _projection, criteriaQuery, criteria, enabledFilters);

        for (int columnIndex = 0; columnIndex < columnNames.Length; columnIndex++)
        {
            SqlString columnName = columnNames[columnIndex];

            if (columnIndex > 0)
            {
                result.Add(" and ");
            }

            result.Add(columnName).Add(" in (").Add(StringHelper.ToString(_values)).Add(")");
        }

        return(result.ToSqlString());
    }
Пример #55
0
        public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery)
        {
            if (this.criteria.Count == 0)
            {
                return(EmptyExpression);
            }

            //TODO: add default capacity
            SqlStringBuilder sqlBuilder = new SqlStringBuilder();

            sqlBuilder.Add("(");

            for (int i = 0; i < this.criteria.Count - 1; i++)
            {
                sqlBuilder.Add(this.criteria[i].ToSqlString(criteria, criteriaQuery));
                sqlBuilder.Add(Op);
            }

            sqlBuilder.Add(this.criteria[this.criteria.Count - 1].ToSqlString(criteria, criteriaQuery));

            sqlBuilder.Add(")");

            return(sqlBuilder.ToSqlString());
        }
Пример #56
0
        public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery,
                                              IDictionary <string, IFilter> enabledFilters)
        {
            System.Type type = GetCriteriaClass(criteria);
            ISearchFactoryImplementor searchFactory = ContextHelper.GetSearchFactory(GetSession(criteria));
            ISet <System.Type>        types;
            IndexSearcher             searcher = FullTextSearchHelper.BuildSearcher(searchFactory, out types, type);

            if (searcher == null)
            {
                throw new SearchException("Could not find a searcher for class: " + type.FullName);
            }
            Lucene.Net.Search.Query query = FullTextSearchHelper.FilterQueryByClasses(types, luceneQuery);
            Hits          hits            = searcher.Search(query);
            List <object> ids             = new List <object>();

            for (int i = 0; i < hits.Length(); i++)
            {
                object id = DocumentBuilder.GetDocumentId(searchFactory, type, hits.Doc(i));
                ids.Add(id);
            }
            base.Values = ids.ToArray();
            return(base.ToSqlString(criteria, criteriaQuery, enabledFilters));
        }
Пример #57
0
        public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery)
        {
            var columnNames = CriterionUtil.GetColumnNames(_propertyName, _projection, criteriaQuery, criteria);
            var dialect     = criteriaQuery.Factory.Dialect;

            if (columnNames.Length != 1)
            {
                throw new HibernateException("accent insensitive like may only be used with single-column properties");
            }

            var parameter = criteriaQuery.NewQueryParameter(GetParameterTypedValue(criteria, criteriaQuery)).Single();

            if (dialect is Oracle8iDialect)
            {
                return(GenerateOracleExpression(columnNames[0], dialect, parameter).ToSqlString());
            }

            if (dialect is MsSql2000Dialect)
            {
                return(GenerateMsSqlExpression(columnNames[0], parameter).ToSqlString());
            }

            throw new NotSupportedException();
        }
Пример #58
0
 /// <summary>
 /// Gets the typed values for parameters in this projection
 /// </summary>
 /// <param name="criteria">The criteria.</param>
 /// <param name="criteriaQuery">The criteria query.</param>
 /// <returns></returns>
 public TypedValue[] GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery)
 {
     return(projection.GetTypedValues(criteria, criteriaQuery));
 }
Пример #59
0
 public virtual IType[] GetTypes(String alias, ICriteria criteria, ICriteriaQuery criteriaQuery)
 {
     return(projection.GetTypes(alias, criteria, criteriaQuery));
 }
Пример #60
0
 public virtual IType[] GetTypes(ICriteria criteria, ICriteriaQuery criteriaQuery)
 {
     return(projection.GetTypes(criteria, criteriaQuery));
 }