예제 #1
0
        public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery)
        {
            var columnNames = CriterionUtil.GetColumnNamesForSimpleExpression(
                null, _projection, criteriaQuery, criteria, this, string.Empty);

            var sqlBuilder = new SqlStringBuilder(4 * columnNames.Length);

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

                sqlBuilder.Add(columnNames[i]);
            }
            return(sqlBuilder.ToSqlString());
        }
예제 #2
0
        public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery)
        {
            var columns = CriterionUtil.GetColumnNames(_propertyName, _projection, criteriaQuery, criteria);

            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());
        }
        public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters)
        {
            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($"SELECT {_temporaryTableProperty} FROM {_temporaryTable}")
                .Add(")");
            }

            return(result.ToSqlString());
        }
예제 #4
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());
    }
예제 #5
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());
    }
예제 #6
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();
        }
예제 #7
0
 private TypedValue GetParameterTypedValue(ICriteria criteria, ICriteriaQuery criteriaQuery)
 {
     return(CriterionUtil.GetTypedValues(criteriaQuery, criteria, _projection, null).Single());
 }