public BooleanMethodCall ( string methodName, IEnumerable |
||
methodName | string | |
parameters | IEnumerable |
|
리턴 |
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor) { IEnumerable<HqlExpression> args = arguments.Select(a => visitor.Visit(a)) .Cast<HqlExpression>(); return treeBuilder.BooleanMethodCall("FREETEXT", args); }
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor) { var arg = visitor.Visit(arguments[0]).AsExpression(); var parent = visitor.Visit(arguments[1]).AsExpression(); var mt = treeBuilder.BooleanMethodCall("hid_IsDescendantOf", new[] {arg, parent}); return mt; }
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor) { /* HqlDot hqlDot = (HqlDot)visitor.Visit(arguments[0]).AsExpression(); List<HqlTreeNode> hqlTreeNodes = hqlDot.Children.ToList(); FieldInfo fieldInfo = typeof(HqlTreeNode).GetField("_node", BindingFlags.NonPublic | BindingFlags.Instance); HqlIdent node1 = (HqlIdent)hqlTreeNodes[0]; IASTNode tableNode = (IASTNode)fieldInfo.GetValue(node1); string tableText = tableNode.Text; HqlIdent node2 = (HqlIdent)hqlTreeNodes[1]; IASTNode columnNode = (IASTNode)fieldInfo.GetValue(node2); string columnText = columnNode.Text; string format = string.Format("{0}.{1} (+)", tableText, columnText); //return treeBuilder.AnyValueConstant(format); return treeBuilder.AnyValueConstant("customer1_.ID (+)"); */ HqlAnyValueConstant expression0 = treeBuilder.AnyValueConstant("+"); HqlExpression expression1 = visitor.Visit(arguments[0]).AsExpression(); List<HqlExpression> expressions = new List<HqlExpression>(); expressions.Add(expression0); expressions.Add(expression1); return treeBuilder.BooleanMethodCall("", expressions); //treeBuilder.Equality(); //HqlMethodCall leftSign = treeBuilder.MethodCall("", treeBuilder.Plus()); /* return expression2; HqlDot dot = (HqlDot) expression2; //return treeBuilder.AnyValueConstant(" ", expression1, expression2); return expression1; /* return expression2; */ //return leftSign; //return treeBuilder.Space(leftSign, ); }
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor) { // There is a problem with NHibernate when an identifier matches an entity's name. The resulting // SQL may be null in that situation. The searchTable's name is split in 2 identifiers to mitigate the problem. string searchTable = (string)((ConstantExpression)arguments[2]).Value; var searchTableFullName = searchTable.Split('.'); if (searchTableFullName.Length != 2) throw new FrameworkException("FullTextSearch table name '" + searchTable + "' must have format 'schema.table'."); string searchColumns = (string)((ConstantExpression)arguments[3]).Value; var parameters = new HqlExpression[] { visitor.Visit(arguments[0]).AsExpression(), visitor.Visit(arguments[1]).AsExpression(), treeBuilder.Ident(searchTableFullName[0]), treeBuilder.Ident(searchTableFullName[1]), treeBuilder.Ident(searchColumns), }; return treeBuilder.BooleanMethodCall("FullTextSearch", parameters); }