Class ArrayContainsMethod

  • All Implemented Interfaces:
    SQLMethod

    public class ArrayContainsMethod
    extends Object
    implements SQLMethod
    Method for evaluating {arrExpr}.contains(elemExpr). Returns a BooleanExpression.
    • Constructor Detail

      • ArrayContainsMethod

        public ArrayContainsMethod()
    • Method Detail

      • getExpression

        public SQLExpression getExpression​(SQLStatement stmt,
                                           SQLExpression expr,
                                           List<SQLExpression> args)
        Description copied from interface: SQLMethod
        Return the expression for this SQL function.
        Specified by:
        getExpression in interface SQLMethod
        Parameters:
        stmt - SQLStatement that this expression is for
        expr - The expression that it is invoked on
        args - Arguments passed in
        Returns:
        The SQL expression using the SQL function
      • containsAsSubquery

        protected SQLExpression containsAsSubquery​(SQLStatement stmt,
                                                   ArrayExpression arrExpr,
                                                   SQLExpression elemExpr)
        Method to return an expression for Collection.contains using a subquery "EXISTS". This is for use when there are "!contains" or "OR" operations in the filter. Creates the following SQL,
        • Collection of NonPC using join table
           SELECT 1 FROM JOIN_TBL A0_SUB 
           WHERE A0_SUB.JOIN_OWN_ID = A0.ID AND A0_SUB.JOIN_ELEM_ID = {elemExpr}
           
        • Collection of PC using join table
           SELECT 1 FROM ELEM_TABLE A0_SUB INNER JOIN JOIN_TBL B0 ON ... 
           WHERE B0.JOIN_OWN_ID = A0.ID AND A0_SUB.ID = {elemExpr}
           
        and returns a BooleanSubqueryExpression ("EXISTS (subquery)")
        Parameters:
        stmt - SQLStatement
        arrExpr - Collection expression
        elemExpr - Expression for the element
        Returns:
        Contains expression
      • elementTypeCompatible

        protected boolean elementTypeCompatible​(Class elementType,
                                                Class collectionElementType)