- All Implemented Interfaces:
Serializable
,Cloneable
- Direct Known Subclasses:
BaseExpression
,CompoundExpression
,ConstantExpression
,LiteralExpression
Purpose: Define an object-level representation of a database query where clause.
Description: An expression is a tree-like structure that defines the selection criteria for a query against objects in the database. The expression has the advantage over SQL by being at the object-level, i.e. the object model attributes and relationships can be used to be query on instead of the database field names. Because it is an object, not a string the expression has the advantage that is can be easily manipulated through code to easily build complex selection criterias.
Responsibilities:
- Store the selection criteria in a tree-like structure.
- Support public manipulation protocols for all comparison and function operators.
- Use operator overloading to support all primitive types as well as objects.
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionprotected DatabaseTable
protected int
PERF: Cache the hashCode.protected DatabaseTable
Temporary values for table aliasingprotected boolean
static boolean
Use the upper() function for case insensitive expression operations (default). -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionPUBLIC: Function, return an expression that adds to a date based on the specified datePart.PUBLIC: Function, return an expression that adds to a date based on the specified datePart.addMonths
(int months) PUBLIC: Function, to add months to a date.PUBLIC: Function, to add months to a date.ADVANCED: Return an expression for the alias.aliasForTable
(DatabaseTable table) INTERNAL: Find the alias for a given tableall
(boolean[] theBooleans) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.all
(byte[] theBytes) PUBLIC: Return an expression that is used with a comparison expression.all
(char[] theChars) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.all
(double[] theDoubles) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.all
(float[] theFloats) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.all
(int[] theInts) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.all
(long[] theLongs) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.all
(short[] theShorts) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.PUBLIC: Return an expression that checks if the receivers value is contained in the collection.PUBLIC: Return an expression that checks if the receivers value is contained in the collection.all
(Expression arguments) all
(ReportQuery subQuery) allOf
(String attributeName, Expression criteria) PUBLIC: Returns an expression equivalent to all ofattributeName
holding true forcriteria
.and
(Expression theExpression) PUBLIC: Return an expression that is the boolean logical combination of both expressions.any
(boolean[] theBooleans) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.any
(byte[] theBytes) PUBLIC: Return an expression that is used with a comparison expression.any
(char[] theChars) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.any
(double[] theDoubles) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.any
(float[] theFloats) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.any
(int[] theInts) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.any
(long[] theLongs) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.any
(short[] theShorts) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.PUBLIC: Return an expression that checks if the receivers value is contained in the collection.PUBLIC: Return an expression that checks if the receivers value is contained in the collection.any
(Expression arguments) any
(ReportQuery subQuery) PUBLIC: Return an expression representing traversal of a 1:many or many:many relationship.ADVANCED: Return an expression representing traversal of a 1:many or many:many relationship.anyOfAllowingNone
(String attributeName) ADVANCED: Return an expression representing traversal of a 1:many or many:many relationship.anyOfAllowingNone
(String attributeName, boolean shouldJoinBeIndependent) ADVANCED: Return an expression representing traversal of a 1:many or many:many relationship.ADVANCED: Assign an alias to the expression in the select clause.PUBLIC: This can only be used within an ordering expression.PUBLIC: Function, returns the single character strings ascii value.asOf
(AsOfClause pastTime) Sets all tables represented by this expression to be queried as of a past time.protected void
assignAlias
(String name, DatabaseTable tableOrExpression) INTERNAL: Alias a particular table within this nodeint
assignTableAliasesStartingAt
(int initialValue) INTERNAL: Assign aliases to any tables which I own.average()
PUBLIC: Function, This represents the aggregate function Average.between
(byte leftValue, byte rightValue) PUBLIC: Function, between two bytesbetween
(char leftChar, char rightChar) PUBLIC: Function, between two charsbetween
(double leftValue, double rightValue) PUBLIC: Function, between two doublesbetween
(float leftValue, float rightValue) PUBLIC: Function, between two floatsbetween
(int leftValue, int rightValue) PUBLIC: Function, between two intsbetween
(long leftValue, long rightValue) PUBLIC: Function, between two longsbetween
(short leftValue, short rightValue) PUBLIC: Function, between two shortsPUBLIC: Return an expression that compares if the receiver's value is between two other values.between
(Expression leftExpression, Expression rightExpression) INTERNAL: Creates an ArgumentListFunctionExpression that is capable of creating a case statement of the form:caseConditionStatement
(Map<Expression, Object> caseConditions, Object defaultItem) PUBLIC: Function Convert values returned by the query to values given in the caseConditions Map.INTERNAL: Creates an ArgumentListFunctionExpression that is capable of creating a case statement of the form:caseStatement
(Map caseItems, Object defaultItem) PUBLIC: Function Convert values returned by the query to values given in the caseItems Map.PUBLIC: Cast the value to the database type.clone()
INTERNAL: Clone the expression maintaining clone identity in the inter-connected expression graph.cloneUsing
(Expression newBase) INTERNAL: This expression is built on a different base than the one we want.coalesce()
coalesce
(Collection expressions) PUBLIC: Function Return null if all arguments are null and the first non-null argument otherwise The equivalent of the COALESCE SQL functionint
INTERNAL: Compute a consistent hash-code for the expression.PUBLIC: Function, returns the concatenation of the two string values.containsAllKeyWords
(String spaceSeparatedKeyWords) PUBLIC: Return an expression that performs a key word search.containsAnyKeyWords
(String spaceSeparatedKeyWords) PUBLIC: Return an expression that performs a key word search.containsSubstring
(String theValue) PUBLIC: Return an expression that compares if the receivers value contains the substring.containsSubstring
(Expression expression) PUBLIC: Return an expression that compares if the receivers value contains the substring.containsSubstringIgnoringCase
(String theValue) PUBLIC: Return an expression that compares if the receivers value contains the substring, ignoring case.containsSubstringIgnoringCase
(Expression expression) PUBLIC: Return an expression that compares if the receivers value contains the substring, ignoring case.protected void
INTERNAL: Modify this expression to use outer joins wherever there are equality operations between two field nodes.copiedVersionFrom
(Map alreadyDone) INTERNAL:count()
PUBLIC: This represents the aggregate function Average.create
(Expression base, Object singleArgument, ExpressionOperator anOperator) INTERNAL:create
(Expression base, List arguments, ExpressionOperator anOperator) INTERNAL:createWithBaseLast
(Expression base, Object singleArgument, ExpressionOperator anOperator) INTERNAL:PUBLIC: This gives access to the current date on the database through expression.PUBLIC: This gives access to the current date only on the database through expression.PUBLIC: This gives access to the current time only on the database through expression.PUBLIC: This gives access to the current timestamp on the database through expression.dateDifference
(String datePart, Date date) PUBLIC: Function, Return the difference between the queried part of a date(i.e.dateDifference
(String datePart, Expression comparisonExpression) PUBLIC: Function, Return the difference between the queried part of a date(i.e.PUBLIC: return a string that represents the given part of a date.PUBLIC: Function return an integer which represents the requested part of the date.PUBLIC: Function, returns the date converted to the string value in the default database format.PUBLIC: Function Convert values returned by the query to values given in the decodeableItems Map.PUBLIC: This can only be used within an ordering expression.INTERNAL: Used in debug printing of this node.difference
(String expression) PUBLIC: Function return a value which indicates how much difference there is between two expressions.distinct()
PUBLIC: Function, This represents the distinct option inside an aggregate function.boolean
doesConform
(Object object, AbstractSession session, AbstractRecord translationRow, int valueHolderPolicy) INTERNAL: Check if the object conforms to the expression in memory.boolean
doesConform
(Object object, AbstractSession session, AbstractRecord translationRow, int valueHolderPolicy, boolean objectIsUnregistered) INTERNAL: New parameter added to doesConform for feature 2612601equal
(boolean theBoolean) equal
(byte theValue) equal
(char theChar) equal
(double theValue) equal
(float theValue) equal
(int theValue) equal
(long theValue) equal
(short theValue) PUBLIC: Return an expression that compares if the receiver's value is equal to the other value.equal
(Expression theValue) Returns an expression that compares if the receiver's value is equal to the other value.equalOuterJoin
(Object theValue) INTERNAL: Return an expression representing an outer join comparisonequalOuterJoin
(Expression theValue) INTERNAL: Return an expression representing an outer join comparisonboolean
INTERNAL: Return if the expression is equal to the other.equalsIgnoreCase
(String theValue) PUBLIC: Return an expression that compares if the receiver's value is equal to the other value, ignoring case.equalsIgnoreCase
(Expression theValue) PUBLIC: Return an expression that compares if the receiver's value is equal to the other value, ignoring case.except
(Expression arguments) PUBLIC: Return a except expression with the subquery.except
(ReportQuery query) PUBLIC: Return a except expression with the subquery.exceptAll
(Expression arguments) PUBLIC: Return a except all expression with the subquery.exceptAll
(ReportQuery query) PUBLIC: Return a except all expression with the subquery.exists
(ReportQuery subQuery) PUBLIC: Return a sub query expression.existsNode
(String xpath) PUBLIC: XMLType Function, gets the number of nodes returned by the given xpath expression returns 0 if there are nonePUBLIC: Extract the date part from the date/time value.boolean
extractFields
(boolean requireExactMatch, boolean primaryKey, ClassDescriptor descriptor, List<DatabaseField> searchFields, Set<DatabaseField> foundFields) INTERNAL: Return if the expression is not a valid primary key expression and add all primary key fields to the set.boolean
extractPrimaryKeyValues
(boolean requireExactMatch, ClassDescriptor descriptor, AbstractRecord primaryKeyRow, AbstractRecord translationRow) INTERNAL: Extract the primary key from the expression into the row.extractValue
(String xpath) PUBLIC: XMLType Function, extracts a value from an XMLType fieldboolean
extractValues
(boolean primaryKeyOnly, boolean requireExactMatch, ClassDescriptor descriptor, AbstractRecord primaryKeyRow, AbstractRecord translationRow) INTERNAL: Extract the primary key from the expression into the row.extractXml
(String xpath) PUBLIC: XMLType Function, extracts a secton of XML from a larget XML documentstatic Expression
from
(Object value, Expression base) INTERNAL: Create an expression node.static Expression
fromConstant
(Object value, Expression base) INTERNAL: Create an expression node.static Expression
fromLiteral
(String value, Expression base) INTERNAL: Create an expression node.PUBLIC: Return an expression that wraps the attribute or query key name.PUBLIC: Return an expression that wraps the attribute or query key name.getAlias
(Expression subSelect) ADVANCED: Return an expression representing a sub-select in the from clause.getAllowingNull
(String attributeName) ADVANCED: Return an expression that wraps the attribute or query key name.Answers the past time the expression is explicitly as of.INTERNAL: For Flashback: If this expression is not already as of some timestamp gets the clause from the base expression.abstract ExpressionBuilder
INTERNAL: Return the expression builder which is the ultimate base of this expression, or null if there isn't one (shouldn't happen if we start from a root)INTERNAL: If there are any fields associated with this expression, return themADVANCED: Return an expression representing a field in a data-level query.getField
(DatabaseField field) ADVANCED: Return an expression representing a field in a data-level query.INTERNAL:getFieldValue
(Object objectValue, AbstractSession session) INTERNAL: Transform the object-level value into a database-level valuegetFunction
(int selector) ADVANCED: This can be used for accessing user defined functions.getFunction
(int selector, List arguments) ADVANCED: This can be used for accessing user defined functions that have arguments.getFunction
(String functionName) ADVANCED: Return a user defined function accepting the argument.getFunction
(String functionName, Object argument) ADVANCED: Return a user defined function accepting the argument.getFunctionWithArguments
(String functionName, List arguments) ADVANCED: Return a user defined function accepting all of the arguments.getLeafDescriptor
(DatabaseQuery query, ClassDescriptor rootDescriptor, AbstractSession session) INTERNAL: Lookup the descriptor for this item by traversing its expression recursively.getLeafMapping
(DatabaseQuery query, ClassDescriptor rootDescriptor, AbstractSession session) INTERNAL: Lookup the mapping for this item by traversing its expression recursively.getName()
INTERNAL:PUBLIC: XMLType Function - gets a number value from an XMLTypeINTERNAL: Most expression have operators, so this is just a convenience method.static ExpressionOperator
getOperator
(int selector) INTERNAL: Create a new expression tree with the named operator.INTERNAL: Return the tables that this node owns for purposes of table aliasing.getParameter
(String parameterName) ADVANCED: Return an expression representing a parameter with the given name.getParameter
(String parameterName, Object type) INTERNAL: Return an expression representing a parameter with the given name and typegetParameter
(DatabaseField field) ADVANCED: Return an expression representing a parameter with the given name.getProperty
(DatabaseField field) ADVANCED: Return an expression representing a property with the given name.INTERNAL:getSelectionFields
(ReadQuery query) INTERNAL:PUBLIC: XMLType Function - gets a string value from an XMLTypeADVANCED: Return an expression representing a table in a data-level query.getTable
(DatabaseTable table) ADVANCED: Return an expression representing a table in a data-level query.INTERNAL: Return the aliases used.greaterThan
(boolean theBoolean) PUBLIC: Return an expression that compares if the receivers value is equal to the other value.greaterThan
(byte theValue) PUBLIC: Return an expression that compares if the receivers value is equal to the other value.greaterThan
(char theChar) PUBLIC: Return an expression that compares if the receivers value is equal to the other value.greaterThan
(double theValue) PUBLIC: Return an expression that compares if the receivers value is equal to the other value.greaterThan
(float theValue) PUBLIC: Return an expression that compares if the receivers value is equal to the other value.greaterThan
(int theValue) PUBLIC: Return an expression that compares if the receivers value is equal to the other value.greaterThan
(long theValue) PUBLIC: Return an expression that compares if the receivers value is equal to the other value.greaterThan
(short theValue) PUBLIC: Return an expression that compares if the receivers value is equal to the other value.greaterThan
(Object theValue) PUBLIC: Return an expression that compares if the receiver's value is greater than the other value.greaterThan
(Expression theValue) greaterThanEqual
(boolean theBoolean) PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value.greaterThanEqual
(byte theValue) PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value.greaterThanEqual
(char theChar) PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value.greaterThanEqual
(double theValue) PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value.greaterThanEqual
(float theValue) PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value.greaterThanEqual
(int theValue) PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value.greaterThanEqual
(long theValue) PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value.greaterThanEqual
(short theValue) PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value.greaterThanEqual
(Object theValue) PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value.greaterThanEqual
(Expression theValue) PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value.boolean
ADVANCED: Answers true ifthis
is to be queried as of a past time.boolean
INTERNAL: Answers if the database tables associated with this expression have been aliased.int
hashCode()
INTERNAL: Return a consistent hash-code for the expression.hexToRaw()
PUBLIC: Function, returns binary array value for the hex string.PUBLIC: Function return a specific value if item returned from the query is null.in
(boolean[] theBooleans) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.in
(byte[] theBytes) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.in
(char[] theChars) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.in
(double[] theDoubles) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.in
(float[] theFloats) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.in
(int[] theInts) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.in
(long[] theLongs) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.in
(short[] theShorts) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.PUBLIC: Return an expression that checks if the receivers value is contained in the collection.in
(Collection theObjects) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.in
(Expression arguments) in
(ReportQuery subQuery) index()
PUBLIC: Function, returns the integer index of the substring within the source string.intersect
(Expression arguments) PUBLIC: Return a intersect expression with the subquery.intersect
(ReportQuery query) PUBLIC: Return a intersect expression with the subquery.intersectAll
(Expression arguments) PUBLIC: Return a intersect all expression with the subquery.intersectAll
(ReportQuery query) PUBLIC: Return a intersect all expression with the subquery.boolean
INTERNAL:boolean
INTERNAL:boolean
INTERNAL:boolean
INTERNAL:PUBLIC: A logical expression for the collectionattributeName
being empty.boolean
INTERNAL:boolean
INTERNAL:PUBLIC: XMLType Function - evaluates to 0 if the xml is a well formed document and 1 if the document is a fragmentboolean
INTERNAL:boolean
INTERNAL:boolean
INTERNAL:boolean
INTERNAL:isNull()
PUBLIC: Compare to null.boolean
INTERNAL:boolean
INTERNAL:boolean
INTERNAL:boolean
INTERNAL:boolean
INTERNAL:boolean
INTERNAL:boolean
INTERNAL:boolean
INTERNAL: Subclasses implement (isParameterExpression() || isConstantExpression())void
iterateOn
(ExpressionIterator iterator) INTERNAL: For iterating using an inner classjoin
(Expression target, Expression onClause) ADVANCED: Defines a join between the two objects based on the specified ON clause.lastDay()
PUBLIC: Function, returns the date with the last date in the months of this source date.leftJoin
(Expression target, Expression onClause) ADVANCED: Defines an outer join between the two objects based on the specified ON clause.PUBLIC: Function, returns the string padded with the substring to the size.PUBLIC: Function, returns the string padded with the substring to the size.leftTrim()
PUBLIC: Function, returns the string left trimmed for white space.PUBLIC: Function, returns the string with the substring trimed from the left.length()
PUBLIC: Function, returns the size of the string.lessThan
(boolean theBoolean) PUBLIC: Return an expression that compares if the receivers value is less than the other value.lessThan
(byte theValue) PUBLIC: Return an expression that compares if the receivers value is less than the other value.lessThan
(char theChar) PUBLIC: Return an expression that compares if the receivers value is less than the other value.lessThan
(double theValue) PUBLIC: Return an expression that compares if the receivers value is less than the other value.lessThan
(float theValue) PUBLIC: Return an expression that compares if the receivers value is less than the other value.lessThan
(int theValue) PUBLIC: Return an expression that compares if the receivers value is less than the other value.lessThan
(long theValue) PUBLIC: Return an expression that compares if the receivers value is less than the other value.lessThan
(short theValue) PUBLIC: Return an expression that compares if the receivers value is less than the other value.PUBLIC: Return an expression that compares if the receivers value is less than the other value.lessThan
(Expression theValue) lessThanEqual
(boolean theBoolean) PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value.lessThanEqual
(byte theValue) PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value.lessThanEqual
(char theChar) PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value.lessThanEqual
(double theValue) PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value.lessThanEqual
(float theValue) PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value.lessThanEqual
(int theValue) PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value.lessThanEqual
(long theValue) PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value.lessThanEqual
(short theValue) PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value.lessThanEqual
(Object theValue) PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value.lessThanEqual
(Expression theValue) PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value.PUBLIC: Return an expression that compares if the receivers value is like other value.PUBLIC: Return an expression that compares if the receivers value is like other value.like
(Expression argument) PUBLIC: Return an expression that compares if the receivers value is like other value.like
(Expression value, Expression escapeSequence) PUBLIC: Return an expression that compares if the receivers value is like other value.likeIgnoreCase
(String theValue) PUBLIC: Return an expression that compares if the receivers value is like the other value, ignoring case.likeIgnoreCase
(Expression theValue) PUBLIC: Return an expression that compares if the receivers value is like the other value, ignoring case.ADVANCED: Return an expression on the literal.PUBLIC: This gives access to the local date only on the database through expression.PUBLIC: This gives access to the local date and time on the database through expression.PUBLIC: This gives access to the local time only on the database through expression.PUBLIC: Function, returns the position ofstr
inthis
PUBLIC: Function, returns the position ofstr
inthis
, starting the search atfromIndex
.PUBLIC: Function, returns the position ofstr
inthis
, starting the search atfromIndex
.mapEntry()
PUBLIC: Return a Map.Entry containing the key and the value from a mapping that maps to a java.util.Map This expression can only be used as a return value in a ReportQuery and cannot be used as part of the WHERE clause in any query EclipseLink: eb.get("mapAttribute").mapEntry()mapKey()
PUBLIC: Return the key from a mapping that maps to a java.util.Map This expression can be used either in as a return value in a ReportQuery or in the WHERE clause in a query EclipseLink: eb.get("mapAttribute").mapKey()maximum()
PUBLIC: This represents the aggregate function Maximum.minimum()
PUBLIC: This represents the aggregate function Minimum.monthsBetween
(Object otherDate) PUBLIC: Function, returns the decimal number of months between the two dates.PUBLIC: funcation return a date converted to a new timezone.PUBLIC: Function, returns the date with the next day from the source date as the day name given.noneOf
(String attributeName, Expression criteria) PUBLIC: Returns an expression equivalent to none ofattributeName
holding true forcriteria
.normalize
(ExpressionNormalizer normalizer) INTERNAL: Normalize into a structure that is printable.not()
PUBLIC: Return an expression that is the boolean logical negation of the expression.notBetween
(byte leftValue, byte rightValue) PUBLIC: Return an expression that compares if the receivers value is not between two other values.notBetween
(char leftChar, char rightChar) PUBLIC: Return an expression that compares if the receivers value is not between two other values.notBetween
(double leftValue, double rightValue) PUBLIC: Return an expression that compares if the receivers value is not between two other values.notBetween
(float leftValue, float rightValue) PUBLIC: Return an expression that compares if the receivers value is not between two other values.notBetween
(int leftValue, int rightValue) PUBLIC: Return an expression that compares if the receivers value is not between two other values.notBetween
(long leftValue, long rightValue) PUBLIC: Return an expression that compares if the receivers value is not between two other values.notBetween
(short leftValue, short rightValue) PUBLIC: Return an expression that compares if the receivers value is not between two other values.notBetween
(Object leftValue, Object rightValue) PUBLIC: Return an expression that compares if the receivers value is not between two other values.notBetween
(Expression leftExpression, Expression rightExpression) PUBLIC: Return an expression that compares if the receivers value is not between two other values.PUBLIC: A logical expression for the collectionattributeName
not being empty.notEqual
(boolean theBoolean) PUBLIC: Return an expression that compares if the receivers value is not equal to the other value.notEqual
(byte theValue) PUBLIC: Return an expression that compares if the receivers value is not equal to the other value.notEqual
(char theChar) PUBLIC: Return an expression that compares if the receivers value is not equal to the other value.notEqual
(double theValue) PUBLIC: Return an expression that compares if the receivers value is not equal to the other value.notEqual
(float theValue) PUBLIC: Return an expression that compares if the receivers value is not equal to the other value.notEqual
(int theValue) PUBLIC: Return an expression that compares if the receivers value is not equal to the other value.notEqual
(long theValue) PUBLIC: Return an expression that compares if the receivers value is not equal to the other value.notEqual
(short theValue) PUBLIC: Return an expression that compares if the receivers value is not equal to the other value.PUBLIC: Return an expression that compares if the receivers value is not equal to the other value.notEqual
(Expression theValue) PUBLIC: Return an expression that compares if the receivers value is not equal to the other value.notExists
(ReportQuery subQuery) PUBLIC: Return a sub query expression.notIn
(boolean[] theBooleans) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.notIn
(byte[] theBytes) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.notIn
(char[] theChars) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.notIn
(double[] theDoubles) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.notIn
(float[] theFloats) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.notIn
(int[] theInts) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.notIn
(long[] theLongs) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.notIn
(short[] theShorts) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.PUBLIC: Return an expression that checks if the receivers value is contained in the collection.notIn
(Collection theObjects) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.notIn
(Expression arguments) notIn
(ReportQuery subQuery) PUBLIC: Return an expression that compares if the receivers value is not like the other value.PUBLIC: Return an expression that compares if the receivers value is not like the other value.notLike
(Expression arguments) PUBLIC: Return an expression that compares if the receivers value is not like the other value.notLike
(Expression value, Expression escapeSequence) PUBLIC: Return an expression that compares if the receivers value is not like the other value.notNull()
PUBLIC: Return an expression representing a comparison to nullPUBLIC: Function Test if arguments are equal, returning null if they are and the value of the first expression otherwise.PUBLIC: This can only be used within an ordering expression.PUBLIC: This can only be used within an ordering expression.ADVANCED: This can be used for accessing user defined operators that have arguments.or
(Expression theExpression) PUBLIC: Return an expression that is the boolean logical combination of both expressions.performOperator
(ExpressionOperator anOperator, List args) INTERNAL:protected void
postCopyIn
(Map alreadyDone) postfixSQL
(String sqlString) ADVANCED: Inserts the SQL as is directly into the expression.ADVANCED: Insert the SQL as is directly into the expression.void
printJava
(ExpressionJavaPrinter printer) INTERNAL: Print java for project class generationabstract void
printSQL
(ExpressionSQLPrinter printer) INTERNAL: Print SQLabstract Expression
rebuildOn
(Expression newBase) INTERNAL: This expression is built on a different base than the one we want.ref()
ADVANCED: For Object-relational support.PUBLIC: Return an expression that compares if the receivers value matches the regular expression.regexp
(Expression regexp) PUBLIC: Return an expression that compares if the receivers value matches the regular expression.protected Expression
registerIn
(Map alreadyDone) PUBLIC: Function, returns the string with occurances of the first substring replaced with the second substring.replicate
(int constant) PUBLIC: return the result of this query repeated a given number of times.PUBLIC: return the result of this query repeated a given number of times.protected void
Reset cached information here so that we can be sure we're accurate.abstract void
resetPlaceHolderBuilder
(ExpressionBuilder queryBuilder) INTERNAL: Search the tree for any expressions (like SubSelectExpressions) that have been built using a builder that is not attached to the query.reverse()
PUBLIC: Function return the reverse of the query result.right
(int characters) PUBLIC: Function return a given number of characters starting at the right of a string.PUBLIC: Function return a given number of characters starting at the right of a string.PUBLIC: Function, returns the string padded with the substring to the size.PUBLIC: Function, returns the string padded with the substring to the size.PUBLIC: Function, returns the string right trimmed for white space.PUBLIC: Function, returns the string with the substring trimed from the right.PUBLIC: Function, returns the date rounded to the year, month or day.boolean
PUBLIC: Return whether this expression should be included in the SELECT clause if it is used in an ORDER BY clausevoid
setLocalBase
(Expression exp) INTERNAL: Set the local base expression, ie the one on the other side of the operator Most types will ignore this, since they don't need it.void
setSelectIfOrderedBy
(boolean selectIfOrderedBy) PUBLIC: Set whether this expression should be included in the SELECT clause of a query that uses it in the ORDER BY clause.INTERNAL:PUBLIC: A logical expression for the size of collection expression.PUBLIC: A logical expression for the size of collectionattributeName
.some
(boolean[] theBooleans) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.some
(byte[] theBytes) PUBLIC: Return an expression that is used with a comparison expression.some
(char[] theChars) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.some
(double[] theDoubles) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.some
(float[] theFloats) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.some
(int[] theInts) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.some
(long[] theLongs) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.some
(short[] theShorts) PUBLIC: Return an expression that checks if the receivers value is contained in the collection.PUBLIC: Return an expression that checks if the receivers value is contained in the collection.PUBLIC: Return an expression that checks if the receivers value is contained in the collection.some
(Expression arguments) some
(ReportQuery subQuery) ADVANCED: Parse the SQL for parameter and return a custom function expression using a custom operator that will print itself as the SQL.PUBLIC: This represents the aggregate function StandardDeviation.subQuery
(ReportQuery subQuery) PUBLIC: Return a sub query expression.substring
(int startPosition) PUBLIC: Function, returns the substring from the source string.substring
(int startPosition, int size) PUBLIC: Function, returns the substring from the source string.PUBLIC: Function, returns the substring from the source string.PUBLIC: Function, returns the substring from the source string.sum()
PUBLIC: This represents the aggregate function Sum.toChar()
PUBLIC: Return an expression that represents the receiver value converted to a character string.PUBLIC: Return an expression that represents the receiver value converted to a character string, with the database formating options (i.e.PUBLIC: Function, returns the single character string with the ascii or character set value.toDate()
PUBLIC: Function, returns date from the string using the default format.PUBLIC: Return an expression that represents the receiver value converted to lower case.toNumber()
PUBLIC: Function, returns the number converted from the string.toString()
PUBLIC: Print a debug form of the expression tree.void
toString
(BufferedWriter writer, int indent) INTERNAL: Print a debug form of the expression tree.PUBLIC: Return an expression that represents the receiver value converted to upper case.PUBLIC: Function, returns the string with the first letter of each word capitalized.PUBLIC: Function, returns the string with each char from the from string converted to the char in the to string.ADVANCED: Return an expression that allows you to treat its base as if it were a subclass of the class returned by the base This can only be called on an ExpressionBuilder, the result of expression.get(String), expression.getAllowingNull(String), the result of expression.anyOf("String") or the result of expression.anyOfAllowingNull("String") downcast uses Expression.type() internally to guarantee the results are of the specified class.trim()
PUBLIC: Function, returns the string trimmed for white space.PUBLIC: Function, returns the string right and left trimmed for the substring.truncateDate
(String datePart) PUBLIC: return the date truncated to the indicated datePart.twist
(Expression expression, Expression newBase) INTERNAL: We are given an expression that comes from a different context than the one in which this was built, e.g.twistedForBaseAndContext
(Expression newBase, Expression context, Expression oldBase) INTERNAL: Rebuild myself against the base, with the values of parameters supplied by the context expression.type()
PUBLIC: Return an expression that wraps the inheritance type field in an expression.union
(Expression arguments) PUBLIC: Return a union expression with the subquery.union
(ReportQuery query) PUBLIC: Return a union expression with the subquery.unionAll
(Expression arguments) PUBLIC: Return a union all expression with the subquery.unionAll
(ReportQuery query) PUBLIC: Return a union all expression with the subquery.void
INTERNAL: Do any required validation for this node.value()
PUBLIC: Function, this represents the value function, used in nestedtablevalue
(boolean constant) PUBLIC: Return an expression on the constant.value
(byte constant) PUBLIC: Return an expression on the constant.value
(char constant) PUBLIC: Return an expression on the constant.value
(double constant) PUBLIC: Return an expression on the constant.value
(float constant) PUBLIC: Return an expression on the constant.value
(int constant) PUBLIC: Return an expression on the constant.value
(long constant) PUBLIC: Return an expression on the constant.value
(short constant) PUBLIC: Return an expression on the constant.PUBLIC: Return an expression on the constant.valueFromObject
(Object object, AbstractSession session, AbstractRecord translationRow, int valueHolderPolicy) INTERNAL: Return the value for in memory comparison.valueFromObject
(Object object, AbstractSession session, AbstractRecord translationRow, int valueHolderPolicy, boolean isObjectUnregistered) INTERNAL: Return the value for in memory comparison.variance()
PUBLIC: Function, this represents the aggregate function Variance.protected void
writeAlias
(ExpressionSQLPrinter printer, DatabaseField field, SQLSelectStatement statement) INTERNAL: Append the field's alias to the writer.void
writeDescriptionOn
(BufferedWriter writer) INTERNAL: Used to print a debug form of the expression tree.protected void
writeField
(ExpressionSQLPrinter printer, DatabaseField field, SQLSelectStatement statement) INTERNAL: Append the field name to the writer.void
writeFields
(ExpressionSQLPrinter printer, List<DatabaseField> newFields, SQLSelectStatement statement) INTERNAL: called from SQLSelectStatement.writeFieldsFromExpression(...)void
writeSubexpressionsTo
(BufferedWriter writer, int indent) INTERNAL: Used in SQL printing.
-
Field Details
-
lastTable
Temporary values for table aliasing -
currentAlias
-
selectIfOrderedBy
protected boolean selectIfOrderedBy -
hashCode
protected int hashCodePERF: Cache the hashCode. -
shouldUseUpperCaseForIgnoreCase
public static boolean shouldUseUpperCaseForIgnoreCaseUse the upper() function for case insensitive expression operations (default). Seting this flag to false will use the lower() function instead.
-
-
Constructor Details
-
Expression
protected Expression()Base Expression Constructor. Not generally used by Developers
-
-
Method Details
-
addDate
PUBLIC: Function, return an expression that adds to a date based on the specified datePart. This is equivalent to the Sybase DATEADD function.Example:
EclipseLink: employee.get("date").addDate("year", 2) Java: NA SQL: DATEADD(date, 2, year)
-
addDate
PUBLIC: Function, return an expression that adds to a date based on the specified datePart. This is equivalent to the Sybase DATEADD function.Example:
EclipseLink: employee.get("date").addDate("year", 2) Java: NA SQL: DATEADD(date, 2, year)
-
addMonths
PUBLIC: Function, to add months to a date. -
addMonths
PUBLIC: Function, to add months to a date. -
aliasForTable
INTERNAL: Find the alias for a given table -
allOf
PUBLIC: Returns an expression equivalent to all ofattributeName
holding true forcriteria
.For every expression with an anyOf, its negation has either an allOf or a noneOf. The following two examples will illustrate as the second is the negation of the first:
AnyOf Example: Employees with a non '613' area code phone number.
ReadAllQuery query = new ReadAllQuery(Employee.class); ExpressionBuilder employee = new ExpressionBuilder(); Expression exp = employee.anyOf("phoneNumbers").get("areaCode").notEqual("613");
AllOf Example: Employees with all '613' area code phone numbers.
ExpressionBuilder employee = new ExpressionBuilder(); ExpressionBuilder phones = new ExpressionBuilder(); Expression exp = employee.allOf("phoneNumbers", phones.get("areaCode").equal("613")); SQL: SELECT ... EMPLOYEE t0 WHERE NOT EXISTS (SELECT ... PHONE t1 WHERE (t0.EMP_ID = t1.EMP_ID) AND NOT (t1.AREACODE = '613'))
allOf is the universal counterpart to the existential anyOf. To have the condition evaluated for each instance it must be put inside of a subquery, which can be expressed as not exists (any of attributeName some condition). (All x such that y = !Exist x such that !y).
Likewise the syntax employee.allOf("phoneNumbers").get("areaCode").equal("613") is not supported for the
equal
must go inside a subQuery.This method saves you from writing the sub query yourself. The above is equivalent to the following expression:
ExpressionBuilder employee = new ExpressionBuilder(); ExpressionBuilder phone = new ExpressionBuilder(); ReportQuery subQuery = new ReportQuery(Phone.class, phone); subQuery.retreivePrimaryKeys(); subQuery.setSelectionCriteria(phone.equal(employee.anyOf("phoneNumbers").and( phone.get("areaCode").notEqual("613"))); Expression exp = employee.notExists(subQuery);
Note if employee has no phone numbers allOf ~ noneOf.
- Parameters:
criteria
- must have its own builder, as it will become the separate selection criteria of a subQuery.- Returns:
- a notExists subQuery expression
-
and
PUBLIC: Return an expression that is the boolean logical combination of both expressions. This is equivalent to the SQL "AND" operator and the Java "&&" operator.Example:
EclipseLink: employee.get("firstName").equal("Bob").and(employee.get("lastName").equal("Smith")) Java: (employee.getFirstName().equals("Bob")) && (employee.getLastName().equals("Smith")) SQL: F_NAME = 'Bob' AND L_NAME = 'Smith'
-
anyOf
PUBLIC: Return an expression representing traversal of a 1:many or many:many relationship. This allows you to query whether any of the "many" side of the relationship satisfies the remaining criteria.Example:
This table compares an example EclipseLink anyOf Expression to Java and SQL Format Equivalent EclipseLink ReadAllQuery query = new ReadAllQuery(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression exp = builder.get("id").equal("14858");
exp = exp.or(builder.anyOf("managedEmployees").get("firstName").equal("Bob"));
Java No direct equivalent SQL SELECT DISTINCT ... WHERE (t2.MGR_ID (+) = t1.ID) AND (t2.F_NAME = 'Bob') -
anyOf
ADVANCED: Return an expression representing traversal of a 1:many or many:many relationship. This allows you to query whether any of the "many" side of the relationship satisfies the remaining criteria.Example:
This table compares an example EclipseLink anyOf Expression to Java and SQL Format Equivalent EclipseLink ReadAllQuery query = new ReadAllQuery(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression exp = builder.get("id").equal("14858");
exp = exp.or(builder.anyOf("managedEmployees").get("firstName").equal("Bob"));
Java No direct equivalent SQL SELECT DISTINCT ... WHERE (t2.MGR_ID (+) = t1.ID) AND (t2.F_NAME = 'Bob') - Parameters:
shouldJoinBeIndependent
- indicates whether a new expression should be created.
-
anyOfAllowingNone
ADVANCED: Return an expression representing traversal of a 1:many or many:many relationship. This allows you to query whether any of the "many" side of the relationship satisfies the remaining criteria. This version of the anyOf operation performs an outer join. Outer joins allow the join to performed even if the target of the relationship is empty. NOTE: outer joins are not supported on all database and have differing semantics.Example:
This table compares an example EclipseLink anyOfAllowingNone Expression to Java and SQL Format Equivalent EclipseLink ReadAllQuery query = new ReadAllQuery(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression exp = builder.get("id").equal("14858");
exp = exp.or(builder.anyOfAllowingNone("managedEmployees").get("firstName").equal("Bob"));
Java No direct equivalent SQL SELECT DISTINCT ... WHERE (t2.MGR_ID (+) = t1.ID) AND (t2.F_NAME = 'Bob') -
anyOfAllowingNone
ADVANCED: Return an expression representing traversal of a 1:many or many:many relationship. This allows you to query whether any of the "many" side of the relationship satisfies the remaining criteria. This version of the anyOf operation performs an outer join. Outer joins allow the join to performed even if the target of the relationship is empty. NOTE: outer joins are not supported on all database and have differing semantics.Example:
This table compares an example EclipseLink anyOfAllowingNone Expression to Java and SQL Format Equivalent EclipseLink ReadAllQuery query = new ReadAllQuery(Employee.class);
ExpressionBuilder builder = new ExpressionBuilder();
Expression exp = builder.get("id").equal("14858");
exp = exp.or(builder.anyOfAllowingNone("managedEmployees").get("firstName").equal("Bob"));
Java No direct equivalent SQL SELECT DISTINCT ... WHERE (t2.MGR_ID (+) = t1.ID) AND (t2.F_NAME = 'Bob') - Parameters:
shouldJoinBeIndependent
- indicates whether a new expression should be created.
-
as
ADVANCED: Assign an alias to the expression in the select clause. -
treat
ADVANCED: Return an expression that allows you to treat its base as if it were a subclass of the class returned by the base This can only be called on an ExpressionBuilder, the result of expression.get(String), expression.getAllowingNull(String), the result of expression.anyOf("String") or the result of expression.anyOfAllowingNull("String") downcast uses Expression.type() internally to guarantee the results are of the specified class.Example:
EclipseLink: employee.get("project").treat(LargeProject.class).get("budget").equal(1000) Java: ((LargeProject)employee.getProjects().get(0)).getBudget() == 1000 SQL: LPROJ.PROJ_ID (+)= PROJ.PROJ_ID AND L_PROJ.BUDGET = 1000 AND PROJ.TYPE = "L"
-
ascending
PUBLIC: This can only be used within an ordering expression. It will order the result ascending. Example:readAllQuery.addOrderBy(expBuilder.get("address").get("city").ascending())
-
nullsFirst
PUBLIC: This can only be used within an ordering expression. Null results will be ordered first. Example:readAllQuery.addOrderBy(expBuilder.get("address").get("city").ascending().nullsFirst())
-
nullsLast
PUBLIC: This can only be used within an ordering expression. Null results will be ordered last. Example:readAllQuery.addOrderBy(expBuilder.get("address").get("city").ascending().nullsLast())
-
asciiValue
PUBLIC: Function, returns the single character strings ascii value. -
asOf
Sets all tables represented by this expression to be queried as of a past time.Example:
EclipseLink: employee.asOf(new AsOfClause(pastTime)) Java: None SQL (Flashback): SELECT ... FROM EMPLOYEE AS OF TIMESTAMP (pastTime) t0 ... SQL (Generic): .. WHERE (t1.START <= pastTime) AND ((t1.END IS NULL) OR t1.END > pastTime)
Set an as of clause at the expression level to still query for current objects while expressing selection criteria like:
- query objects as of one time that met some condition at another time.
- query objects that changed a certain way over a certain interval (querying for change).
Simultaneously querying on two versions of the same object (one past one present) lets you express these advanced selection criteria.
Example: Querying on past attributes using parallel expressions.
// Finds all employees who lived in Ottawa as of a past time. ExpressionBuilder employee = new ExpressionBuilder(); ExpressionBuilder pastEmployee = new ExpressionBuilder(Employee.class); pastEmployee.asOf(pastTime); Expression pastAddress = pastEmployee.get("address"); // by default address will also be as of past time. Expression selectionCriteria = pastAddress.get("city").equal("Ottawa").and( employee.equal(pastEmployee));
The advantage of the parallel expression is that you can still read current objects, the as of clause will affect only the where clause / selection criteria.
You may be tempted to rewrite the above as employee.get("address").asOf(pastTime). That is allowed but see below for the finer points involved in this.
Example: Querying on object changes using parallel expressions.
// Finds all employees who recently received a raise. Note that current // objects are returned, so can be cached normally. ExpressionBuilder employee = new ExpressionBuilder(); Expression pastEmployee = new ExpressionBuilder(Employee.class); pastEmployee.asOf(yesterday); Expression parallelJoin = employee.equal(pastEmployee); Expression selectionCriteria = parallelJoin.and( employee.get("salary").greaterThan(pastEmployee.get("salary")));
Example: Querying on object changes using custom query keys
// First define the custom query key and add it to your descriptor. ExpressionBuilder builder = new ExpressionBuilder(Employee.class); Expression joinCriteria = builder.getField("EMPLOYEE.EMP_ID").equal(builder.getParameter("EMPLOYEE.EMP_ID")); OneToOneQueryKey selfReferential = new OneToOneQueryKey(); selfReferential.setName("this"); selfReferential.setJoinCriteria(joinCriteria); selfReferential.setReferenceClass(Employee.class); getSession().getDescriptor(Employee.class).addQueryKey(selfReferential); // Now build query as before. Expression employee = new ExpessionBuilder(); Expression pastEmployee = employee.get("this").asOf(yesterday); Expression selectionCriteria = employee.get("salary").greaterThan(pastEmployee.get("salary"));
Note in general that any parallel expression can be rewritten using a custom query key. EclipseLink will even automatically interpret x.get("this") for you so you do not need to define the above query key first.
Full Reference:
If an object is mapped to multiple tables, then each table will be as of the same time. Two objects mapped to the same table can not have different as of times. Conversely only expressions which have associated tables can have an as of clause.
If an as of clause is not explicitly set an expression will use the clause of its base expression, and so on recursively until one is found or an ExpressionBuilder is reached. Some usage scenarios follow:
- employee.asOf(pastTime).anyOf("projects"): projects as of past time.
- expressionBuilder.asOf(pastTime): entire expression as of past time.
- employee.asOf(pastTime).anyOf("projects").asOf(null): projects as of current time.
- employee.anyOf("projects").asOf(pastTime): projects only as of past time.
Watch out for x.asOf(oneTime).get("y").asOf(anotherTime).
- emp.anyOf("phoneNumbers").asOf(yesterday) = emp.asOf(yesterday).anyOf("phoneNumbers") but:
- emp.get("address").asOf(yesterday) != emp.asOf(yesterday).get("address").
- Parameters:
pastTime
- A read only data object used to represent a past time.- Returns:
this
- Since:
- OracleAS EclipseLink 10g (10.0.3)
- See Also:
-
assignAlias
INTERNAL: Alias a particular table within this node -
assignTableAliasesStartingAt
public int assignTableAliasesStartingAt(int initialValue) INTERNAL: Assign aliases to any tables which I own. Start with t(initialValue), and return the new value of the counter , i.e. if initialValue is one and I have tables ADDRESS and EMPLOYEE I will assign them t1 and t2 respectively, and return 3. -
average
PUBLIC: Function, This represents the aggregate function Average. Can be used only within Report Queries. -
between
PUBLIC: Function, between two bytes -
between
PUBLIC: Function, between two chars -
between
PUBLIC: Function, between two doubles -
between
PUBLIC: Function, between two floats -
between
PUBLIC: Function, between two ints -
between
PUBLIC: Function, between two longs -
between
PUBLIC: Return an expression that compares if the receiver's value is between two other values. This means the receiver's value is greater than or equal to the leftValue argument and less than or equal to the rightValue argument.This is equivalent to the SQL "BETWEEN AND" operator and Java ">=", "<=;" operators.
Example:
EclipseLink: employee.get("age").between(19,50) Java: (employee.getAge() >= 19) && (employee.getAge() <= 50) SQL: AGE BETWEEN 19 AND 50
-
between
-
between
PUBLIC: Function, between two shorts -
caseStatement
PUBLIC: Function Convert values returned by the query to values given in the caseItems Map. The equivalent of the Oracle CASE functionExample:
Map caseTable = new HashMap(); caseTable.put("Robert", "Bob"); caseTable.put("Susan", "Sue"); EclipseLink: employee.get("name").caseStatement(caseTable, "No-Nickname") Java: NA SQL: CASE name WHEN "Robert" THEN "Bob" WHEN "Susan" THEN "Sue" ELSE "No-Nickname"
- Parameters:
caseItems
- java.util.Map A Map containing the items to be processed. Keys represent the items to match coming from the query. Values represent what a key will be changed to.defaultItem
- java.lang.String the default value that will be used if none of the keys in the hashtable match
-
caseStatement
INTERNAL: Creates an ArgumentListFunctionExpression that is capable of creating a case statement of the form:
This expression must be manipulated to successfully build a case statement by adding appropriate children to it. A child must be added for the "case expression" (name above), a pair of children must be added for each "when then" expression and a child must be added for the else.SQL: CASE name WHEN "Robert" THEN "Bob" WHEN "Susan" THEN "Sue" ELSE "No-Nickname"
- See Also:
-
caseConditionStatement
PUBLIC: Function Convert values returned by the query to values given in the caseConditions Map. The equivalent of the SQL CASE functionExample:
Map caseTable = new HashMap(); caseTable.put(employee.get("name").equals("Robert"), "Bob"); caseTable.put(employee.get("name").equals("Susan"), "Sue"); EclipseLink: expressionBuilder.caseConditionStatement(caseTable, "No-Nickname") Java: NA SQL: CASE WHEN name = "Robert" THEN "Bob" WHEN name = "Susan" THEN "Sue" ELSE "No-Nickname"
- Parameters:
caseConditions
- java.util.Map A Map containing the items to be processed. Keys represent the items to match coming from the query. Values represent what a key will be changed to.defaultItem
- java.lang.Object the default value that will be used if none of the keys in the Map match
-
caseConditionStatement
INTERNAL: Creates an ArgumentListFunctionExpression that is capable of creating a case statement of the form:
This expression must be manipulated to successfully build a case statement by adding appropriate children to it. A pair of children must be added for each "when then" expression and a child must be added for the else.SQL: CASE WHEN name = "Robert" THEN "Bob" WHEN name = "Susan" THEN "Sue" ELSE "No-Nickname"
- See Also:
-
nullIf
PUBLIC: Function Test if arguments are equal, returning null if they are and the value of the first expression otherwise.Example:
EclipseLink: builder.get("name").nullIf( "Bobby") Java: NA SQL: NULLIF(name, "Bobby")
- Parameters:
object
- java.lang.Object the value/expression that will be compared to the base expression
-
coalesce
PUBLIC: Function Return null if all arguments are null and the first non-null argument otherwise The equivalent of the COALESCE SQL functionExample:
List list = new ArrayList(3); list.add(builder.get("firstName")); list.add(builder.get("lastName")); list.add(builder.get("nickname")); EclipseLink: expressionBuilder.coalesce(caseTable) Java: NA SQL: COALESCE(firstname, lastname, nickname)
- Parameters:
expressions
- java.util.Collection A Collection containing the items to check if null
-
coalesce
-
clone
INTERNAL: Clone the expression maintaining clone identity in the inter-connected expression graph. -
cloneUsing
INTERNAL: This expression is built on a different base than the one we want. Rebuild it and return the root of the new tree. This method will rebuildOn the receiver even it is a parallel select or a sub select: it will not replace every base with newBase. Also it will rebuild using anyOf as appropriate not get.- See Also:
-
concat
PUBLIC: Function, returns the concatenation of the two string values. -
containsAllKeyWords
PUBLIC: Return an expression that performs a key word search.Example:
EclipseLink: project.get("description").containsAllKeyWords("EclipseLink rdbms java")
-
containsAnyKeyWords
PUBLIC: Return an expression that performs a key word search.Example:
EclipseLink: project.get("description").containsAllKeyWords("EclipseLink rdbms java")
-
containsSubstring
PUBLIC: Return an expression that compares if the receivers value contains the substring.Example:
EclipseLink: employee.get("firstName").containsSubstring("Bob") Java: employee.getFirstName().indexOf("Bob") != -1 SQL: F_NAME LIKE '%BOB%'
-
containsSubstring
PUBLIC: Return an expression that compares if the receivers value contains the substring.Example:
EclipseLink: employee.get("firstName").containsSubstring("Bob") Java: employee.getFirstName().indexOf("Bob") != -1 SQL: F_NAME LIKE '%BOB%'
-
containsSubstringIgnoringCase
PUBLIC: Return an expression that compares if the receivers value contains the substring, ignoring case.Example:
EclipseLink: employee.get("firstName").containsSubstringIgnoringCase("Bob") Java: employee.getFirstName().toUpperCase().indexOf("BOB") != -1 SQL: UPPER(F_NAME) LIKE '%BOB%'
-
containsSubstringIgnoringCase
PUBLIC: Return an expression that compares if the receivers value contains the substring, ignoring case.Example:
EclipseLink: employee.get("firstName").containsSubstringIgnoringCase("Bob") Java: employee.getFirstName().toUpperCase().indexOf("BOB") != -1 SQL: UPPER(F_NAME) LIKE '%BOB%'
-
convertNodeToUseOuterJoin
protected void convertNodeToUseOuterJoin() -
convertToUseOuterJoin
INTERNAL: Modify this expression to use outer joins wherever there are equality operations between two field nodes. -
copiedVersionFrom
INTERNAL: -
count
PUBLIC: This represents the aggregate function Average. Can be used only within Report Queries. -
create
INTERNAL: -
createWithBaseLast
public Expression createWithBaseLast(Expression base, Object singleArgument, ExpressionOperator anOperator) INTERNAL: -
create
INTERNAL: -
currentTimeStamp
PUBLIC: This gives access to the current timestamp on the database through expression. Please note, this method is added for consistency and returns the same result as currentDate. -
currentDate
PUBLIC: This gives access to the current date on the database through expression. -
currentDateDate
PUBLIC: This gives access to the current date only on the database through expression. Note the difference between currentDate() and this method. This method does not return the time portion of current date where as currentDate() does. -
currentTime
PUBLIC: This gives access to the current time only on the database through expression. Note the difference between currentDate() and this method. This method does not return the date portion where as currentDate() does. -
localDateTime
PUBLIC: This gives access to the local date and time on the database through expression. -
localDate
PUBLIC: This gives access to the local date only on the database through expression. Note the difference between localDate() and this method. This method does not return the time portion of local datetime where as localDate() does. -
localTime
PUBLIC: This gives access to the local time only on the database through expression. Note the difference between localDate() and this method. This method does not return the date portion of local datetime where as localDate() does. -
dateDifference
PUBLIC: Function, Return the difference between the queried part of a date(i.e. years, days etc.) and same part of the given date. The equivalent of the Sybase function DateDiffExample:
EclipseLink: employee.get("date").dateDifference("year", new Date(System.currentTimeMillis())) Java: NA SQL: DATEADD(date, 2, GETDATE)
-
dateDifference
PUBLIC: Function, Return the difference between the queried part of a date(i.e. years, days etc.) and same part of the given date. The equivalent of the Sybase function DateDiffExample:
EclipseLink: employee.get("date").dateDifference("year", new Date(System.currentTimeMillis())) Java: NA SQL: DATEADD(date, 2, GETDATE)
-
dateName
PUBLIC: return a string that represents the given part of a date. The equivalent of the Sybase DATENAME functionExample:
EclipseLink: employee.get("date").dateName("year") Java: new String(date.getYear()) SQL: DATENAME(date, year)
-
datePart
PUBLIC: Function return an integer which represents the requested part of the date. Equivalent of the Sybase function DATEPARTExample:
EclipseLink: employee.get("date").datePart("year") Java: date.getYear() SQL: DATEPART(date, year)
-
dateToString
PUBLIC: Function, returns the date converted to the string value in the default database format. -
decode
PUBLIC: Function Convert values returned by the query to values given in the decodeableItems Map. The equivalent of the Oracle DECODE function. Note: This will only work on databases that support Decode with the syntax below.Example:
Map decodeTable = new HashMap(); decodeTable.put("Robert", "Bob"); decodeTable.put("Susan", "Sue"); EclipseLink: employee.get("name").Decode(decodeTable, "No-Nickname") Java: NA SQL: DECODE(name, "Robert", "Bob", "Susan", "Sue", "No-Nickname")
- Parameters:
decodeableItems
- java.util.Map a Map containing the items to be decoded. Keys represent the items to match coming from the query. Values represent what a key will be changed to.defaultItem
- the default value that will be used if none of the keys in the Map match
-
descending
PUBLIC: This can only be used within an ordering expression. It will order the result descending.Example:
readAllQuery.addOrderBy(expBuilder.get("address").get("city").descending())
-
descriptionOfNodeType
INTERNAL: Used in debug printing of this node. -
difference
PUBLIC: Function return a value which indicates how much difference there is between two expressions. Equivalent of the Sybase DIFFERENCE functionExample:
EclipseLink: employee.get("name").difference("Frank") SQL: DIFFERENCE(name, 'Frank')
-
distinct
PUBLIC: Function, This represents the distinct option inside an aggregate function. Can be used only within Report Queries. -
doesConform
public boolean doesConform(Object object, AbstractSession session, AbstractRecord translationRow, int valueHolderPolicy) throws QueryException INTERNAL: Check if the object conforms to the expression in memory. This is used for in-memory querying. By default throw an exception as all valid root expressions must override. If the expression in not able to determine if the object conform throw a not supported exception.- Throws:
QueryException
-
doesConform
public boolean doesConform(Object object, AbstractSession session, AbstractRecord translationRow, int valueHolderPolicy, boolean objectIsUnregistered) throws QueryException INTERNAL: New parameter added to doesConform for feature 2612601- Parameters:
objectIsUnregistered
- true if object possibly not a clone, but is being conformed against the unit of work cache; if object is not in the UOW cache but some of its attributes are, use the registered versions of object's attributes for the purposes of this method.- Throws:
QueryException
-
equals
INTERNAL: Return if the expression is equal to the other. This is used to allow dynamic expression's SQL to be cached. Two expressions should be considered equal if they have the same "parameterized" SQL. This must be over written by each subclass. -
hashCode
public int hashCode()INTERNAL: Return a consistent hash-code for the expression. This is used to allow dynamic expression's SQL to be cached. Two expressions should have the same hashCode if they have the same "parameterized" SQL. This should be over written by each subclass to provide a consistent value. -
computeHashCode
public int computeHashCode()INTERNAL: Compute a consistent hash-code for the expression. This is used to allow dynamic expression's SQL to be cached. Two expressions should have the same hashCode if they have the same "parameterized" SQL. This should be over written by each subclass to provide a consistent value. -
equal
-
equal
-
equal
-
equal
-
equal
-
equal
-
equal
PUBLIC: Return an expression that compares if the receiver's value is equal to the other value. This is equivalent to the SQL "=" operator and Java "equals" method.Example:
EclipseLink: employee.get("firstName").equal("Bob") Java: employee.getFirstName().equals("Bob") SQL: F_NAME = 'Bob'
-
equal
Returns an expression that compares if the receiver's value is equal to the other value. This is equivalent to the SQL "=" operator and Java "equals" method.Since OracleAS EclipseLink 10g (9.0.4) if
this
is anExpressionBuilder
andtheValue
is not used elsewhere, both will be translated to the same table. This can generate SQL with one less join for most exists subqueries.Example:
EclipseLink: employee.get("manager").equal(employee) Java: employee.getManager().equals(employee) SQL (optimized): EMP_ID = MANAGER_ID SQL (unoptimized): t0.MANAGER_ID = t1.EMP_ID AND t0.EMP_ID = t1.EMP_ID
- See Also:
-
equal
-
equal
-
equalOuterJoin
INTERNAL: Return an expression representing an outer join comparison -
equalOuterJoin
INTERNAL: Return an expression representing an outer join comparison -
equalsIgnoreCase
PUBLIC: Return an expression that compares if the receiver's value is equal to the other value, ignoring case. This is equivalent to the Java "equalsIgnoreCase" method.Example:
EclipseLink: employee.get("firstName").equalsIgnoreCase("Bob") Java: employee.getFirstName().equalsIgnoreCase("Bob") SQL: UPPER(F_NAME) = 'BOB'
-
equalsIgnoreCase
PUBLIC: Return an expression that compares if the receiver's value is equal to the other value, ignoring case. This is equivalent to the Java "equalsIgnoreCase" method.Example:
EclipseLink: employee.get("firstName").equalsIgnoreCase("Bob") Java: employee.getFirstName().equalsIgnoreCase("Bob") SQL: UPPER(F_NAME) = 'BOB'
-
exists
PUBLIC: Return a sub query expression. A sub query using a report query to define a subselect within another queries expression or select's where clause. The sub query (the report query) will use its own expression builder be can reference expressions from the base expression builder.Example:
ExpressionBuilder builder = new ExpressionBuilder(); ReportQuery subQuery = new ReportQuery(Employee.class, new ExpressionBuilder()); subQuery.setSelectionCriteria(subQuery.getExpressionBuilder().get("name").equal(builder.get("name"))); builder.exists(subQuery);
-
extractPrimaryKeyValues
public boolean extractPrimaryKeyValues(boolean requireExactMatch, ClassDescriptor descriptor, AbstractRecord primaryKeyRow, AbstractRecord translationRow) INTERNAL: Extract the primary key from the expression into the row. Ensure that the query is querying the exact primary key. Return false if not on the primary key. -
extractValues
public boolean extractValues(boolean primaryKeyOnly, boolean requireExactMatch, ClassDescriptor descriptor, AbstractRecord primaryKeyRow, AbstractRecord translationRow) INTERNAL: Extract the primary key from the expression into the row. Ensure that the query is querying the exact primary key. Return false if not on the primary key. -
extractFields
public boolean extractFields(boolean requireExactMatch, boolean primaryKey, ClassDescriptor descriptor, List<DatabaseField> searchFields, Set<DatabaseField> foundFields) INTERNAL: Return if the expression is not a valid primary key expression and add all primary key fields to the set. -
from
INTERNAL: Create an expression node. -
fromConstant
INTERNAL: Create an expression node. -
fromLiteral
INTERNAL: Create an expression node. -
get
PUBLIC: Return an expression that wraps the attribute or query key name. This method is used to construct user-defined queries containing joins.Example:
builder.get("address").get("city").equal("Ottawa");
-
get
PUBLIC: Return an expression that wraps the attribute or query key name. This method is used to construct user-defined queries containing joins.Example:
builder.get("address", false).get("city").equal("Ottawa");
- Parameters:
forceInnerJoin
- - allows the get to not force an inner-join (if getAllowingNull was used elsewhere).
-
getAllowingNull
ADVANCED: Return an expression that wraps the attribute or query key name. This is only applicable to 1:1 relationships, and allows the target of the relationship to be null if there is no corresponding relationship in the database. Implemented via an outer join in the database.Example:
builder.getAllowingNull("address").get("city").equal("Ottawa");
-
getAsOfClause
Answers the past time the expression is explicitly as of.- Returns:
- An immutable object representation of the past time.
null
if no clause set,AsOfClause.NO_CLAUSE
if clause explicitly set tonull
. - See Also:
-
getAsOfClauseRecursively
INTERNAL: For Flashback: If this expression is not already as of some timestamp gets the clause from the base expression. Allows a clause to be set only on the builder and then propogated during normalize. -
getBuilder
INTERNAL: Return the expression builder which is the ultimate base of this expression, or null if there isn't one (shouldn't happen if we start from a root) -
getClonedField
INTERNAL: If there are any fields associated with this expression, return them -
getField
ADVANCED: Return an expression representing a field in a data-level query. This is used internally in EclipseLink, or to construct queries involving fields and/or tables that are not mapped.Example:
builder.getField("ADDR_ID").greaterThan(100); builder.getTable("PROJ_EMP").getField("TYPE").equal("S");
-
getField
ADVANCED: Return an expression representing a field in a data-level query. This is used internally in EclipseLink, or to construct queries involving fields and/or tables that are not mapped.Example:
builder.getField(aField).greaterThan(100);
-
getFields
INTERNAL: -
getSelectionFields
INTERNAL: -
getSelectionFields
-
getFieldValue
INTERNAL: Transform the object-level value into a database-level value -
join
ADVANCED: Defines a join between the two objects based on the specified ON clause. This can be used to define a join condition on two unrelated objects, or to qualify a relationship join with additional criteria.Example:
Expression address = employee.getAllowingNull("address"); employee.join(address, address.get("city").equal("Ottawa")); query.addNonFetchJoin(address);
-
leftJoin
ADVANCED: Defines an outer join between the two objects based on the specified ON clause. This can be used to define a join condition on two unrelated objects, or to qualify a relationship join with additional criteria.Example:
Expression address = employee.getAllowingNull("address"); employee.leftJoin(address, address.get("city").equal("Ottawa")); query.addNonFetchJoin(address);
-
getFunction
ADVANCED: This can be used for accessing user defined functions. The operator must be defined in ExpressionOperator to be able to reference it.- See Also:
-
getFunction
ADVANCED: This can be used for accessing user defined functions that have arguments. The operator must be defined in ExpressionOperator to be able to reference it.- See Also:
-
operator
ADVANCED: This can be used for accessing user defined operators that have arguments. The operator must be defined in ExpressionOperator to be able to reference it.- See Also:
-
getFunction
ADVANCED: Return a user defined function accepting the argument. The function is assumed to be a normal prefix function and will print like, UPPER(base).Example:
builder.get("firstName").getFunction("UPPER");
-
getFunction
ADVANCED: Return a user defined function accepting the argument. The function is assumed to be a normal prefix function and will print like, CONCAT(base, argument). -
getFunctionWithArguments
ADVANCED: Return a user defined function accepting all of the arguments. The function is assumed to be a normal prefix function like, CONCAT(base, value1, value2, value3, ...). -
sql
ADVANCED: Parse the SQL for parameter and return a custom function expression using a custom operator that will print itself as the SQL. Arguments are passed using '?', and must match the number of arguments. -
type
PUBLIC: Return an expression that wraps the inheritance type field in an expression.Example:
builder.getClassForInheritance().equal(SmallProject.class); builder.anyOf("projects").getClassForInheritance().equal(builder.getParameter("projectClass"));
-
getName
INTERNAL: -
getOperator
INTERNAL: Most expression have operators, so this is just a convenience method. -
getOperator
INTERNAL: Create a new expression tree with the named operator. Part of the implementation of user-level "get" -
getOwnedTables
INTERNAL: Return the tables that this node owns for purposes of table aliasing. -
getParameter
INTERNAL: Return an expression representing a parameter with the given name and type -
getParameter
ADVANCED: Return an expression representing a parameter with the given name. -
getParameter
ADVANCED: Return an expression representing a parameter with the given name. -
getProperty
ADVANCED: Return an expression representing a property with the given name. -
getSession
INTERNAL: -
getTable
ADVANCED: Return an expression representing a table in a data-level query. This is used internally in EclipseLink, or to construct queries involving fields and/or tables that are not mapped.Example:
builder.getTable("PROJ_EMP").getField("TYPE").equal("S");
-
getTable
ADVANCED: Return an expression representing a table in a data-level query. This is used internally in EclipseLink, or to construct queries involving fields and/or tables that are not mapped.Example:
builder.getTable(linkTable).getField("TYPE").equal("S");
-
getAlias
ADVANCED: Return an expression representing a sub-select in the from clause.Example:
builder.getAlias(builder.subQuery(reportQuery)).get("type").equal("S");
-
getTableAliases
INTERNAL: Return the aliases used. By default, return null, since we don't have tables. -
greaterThan
PUBLIC: Return an expression that compares if the receivers value is equal to the other value. This is equivalent to the SQL "=" operator and Java "equals" method. -
greaterThan
PUBLIC: Return an expression that compares if the receivers value is equal to the other value. This is equivalent to the SQL "=" operator and Java "equals" method. -
greaterThan
PUBLIC: Return an expression that compares if the receivers value is equal to the other value. This is equivalent to the SQL "=" operator and Java "equals" method. -
greaterThan
PUBLIC: Return an expression that compares if the receivers value is equal to the other value. This is equivalent to the SQL "=" operator and Java "equals" method. -
greaterThan
PUBLIC: Return an expression that compares if the receivers value is equal to the other value. This is equivalent to the SQL "=" operator and Java "equals" method. -
greaterThan
PUBLIC: Return an expression that compares if the receivers value is equal to the other value. This is equivalent to the SQL "=" operator and Java "equals" method. -
greaterThan
PUBLIC: Return an expression that compares if the receiver's value is greater than the other value. This is equivalent to the SQL ">" operator. -
greaterThan
-
greaterThan
PUBLIC: Return an expression that compares if the receivers value is equal to the other value. This is equivalent to the SQL "=" operator and Java "equals" method. -
greaterThan
PUBLIC: Return an expression that compares if the receivers value is equal to the other value. This is equivalent to the SQL "=" operator and Java "equals" method. -
greaterThanEqual
PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value. This is equivalent to the SQL ">=" operator. -
greaterThanEqual
PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value. This is equivalent to the SQL ">=" operator. -
greaterThanEqual
PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value. This is equivalent to the SQL ">=" operator. -
greaterThanEqual
PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value. This is equivalent to the SQL ">=" operator. -
greaterThanEqual
PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value. This is equivalent to the SQL ">=" operator. -
greaterThanEqual
PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value. This is equivalent to the SQL ">=" operator. -
greaterThanEqual
PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value. This is equivalent to the SQL ">=" operator. -
greaterThanEqual
PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value. This is equivalent to the SQL ">=" operator. -
greaterThanEqual
PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value. This is equivalent to the SQL ">=" operator. -
greaterThanEqual
PUBLIC: Return an expression that compares if the receivers value is greater and equal to the other value. This is equivalent to the SQL ">=" operator. -
hasAsOfClause
public boolean hasAsOfClause()ADVANCED: Answers true ifthis
is to be queried as of a past time.- Returns:
- false from
asOf(null); hasAsOfClause()
. - See Also:
-
hasBeenAliased
public boolean hasBeenAliased()INTERNAL: Answers if the database tables associated with this expression have been aliased. This insures the same tables are not aliased twice. -
hexToRaw
PUBLIC: Function, returns binary array value for the hex string. -
ifNull
PUBLIC: Function return a specific value if item returned from the query is null. Equivalent of the oracle NVL functionExample:
EclipseLink: employee.get("name").ifNull("no-name") Java: NA SQL: NVL(name, 'no-name')
-
in
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
in
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
in
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
in
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
in
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
in
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
in
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
in
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
in
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
in
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator.Example:
EclipseLink: employee.get("age").in(ages) Java: ages.contains(employee.getAge()) SQL: AGE IN (55, 18, 30)
-
in
-
in
-
index
-
indexOf
PUBLIC: Function, returns the integer index of the substring within the source string. -
isClassTypeExpression
public boolean isClassTypeExpression()INTERNAL: -
isCompoundExpression
public boolean isCompoundExpression()INTERNAL: -
isConstantExpression
public boolean isConstantExpression()INTERNAL: -
isDataExpression
public boolean isDataExpression()INTERNAL: -
isEmpty
PUBLIC: A logical expression for the collectionattributeName
being empty. Equivalent tosize(attributeName).equal(0)
Example:
This is a case where a fast operation in java does not translate to an equally fast operation in SQL, requiring a correlated subselect.EclipseLink: employee.isEmpty("phoneNumbers") Java: employee.getPhoneNumbers().size() == 0 SQL: SELECT ... FROM EMP t0 WHERE ( (SELECT COUNT(*) FROM PHONE t1 WHERE (t0.EMP_ID = t1.EMP_ID)) = 0)
- See Also:
-
isExpressionBuilder
public boolean isExpressionBuilder()INTERNAL: -
isFieldExpression
public boolean isFieldExpression()INTERNAL: -
isFunctionExpression
public boolean isFunctionExpression()INTERNAL: -
isLiteralExpression
public boolean isLiteralExpression()INTERNAL: -
isLogicalExpression
public boolean isLogicalExpression()INTERNAL: -
isNull
PUBLIC: Compare to null. -
isObjectExpression
public boolean isObjectExpression()INTERNAL: -
isParameterExpression
public boolean isParameterExpression()INTERNAL: -
isQueryKeyExpression
public boolean isQueryKeyExpression()INTERNAL: -
isRelationExpression
public boolean isRelationExpression()INTERNAL: -
isSubSelectExpression
public boolean isSubSelectExpression()INTERNAL: -
isTableExpression
public boolean isTableExpression()INTERNAL: -
isTreatExpression
public boolean isTreatExpression()INTERNAL: -
isMapEntryExpression
public boolean isMapEntryExpression()INTERNAL: -
isValueExpression
public boolean isValueExpression()INTERNAL: Subclasses implement (isParameterExpression() || isConstantExpression()) -
iterateOn
INTERNAL: For iterating using an inner class -
lastDay
PUBLIC: Function, returns the date with the last date in the months of this source date. -
leftPad
PUBLIC: Function, returns the string padded with the substring to the size. -
leftPad
PUBLIC: Function, returns the string padded with the substring to the size. -
leftTrim
PUBLIC: Function, returns the string left trimmed for white space. -
leftTrim
PUBLIC: Function, returns the string with the substring trimed from the left. -
length
PUBLIC: Function, returns the size of the string. -
lessThan
PUBLIC: Return an expression that compares if the receivers value is less than the other value. This is equivalent to the SQL "<" operator. -
lessThan
PUBLIC: Return an expression that compares if the receivers value is less than the other value. This is equivalent to the SQL "<" operator. -
lessThan
PUBLIC: Return an expression that compares if the receivers value is less than the other value. This is equivalent to the SQL "<" operator. -
lessThan
PUBLIC: Return an expression that compares if the receivers value is less than the other value. This is equivalent to the SQL "<" operator. -
lessThan
PUBLIC: Return an expression that compares if the receivers value is less than the other value. This is equivalent to the SQL "<" operator. -
lessThan
PUBLIC: Return an expression that compares if the receivers value is less than the other value. This is equivalent to the SQL "<" operator. -
lessThan
PUBLIC: Return an expression that compares if the receivers value is less than the other value. This is equivalent to the SQL "<" operator. -
lessThan
-
lessThan
PUBLIC: Return an expression that compares if the receivers value is less than the other value. This is equivalent to the SQL "<" operator. -
lessThan
PUBLIC: Return an expression that compares if the receivers value is less than the other value. This is equivalent to the SQL "<" operator. -
lessThanEqual
PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value. This is equivalent to the SQL "<=" operator. -
lessThanEqual
PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value. This is equivalent to the SQL "<=" operator. -
lessThanEqual
PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value. This is equivalent to the SQL "<=" operator. -
lessThanEqual
PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value. This is equivalent to the SQL "<=" operator. -
lessThanEqual
PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value. This is equivalent to the SQL "<=" operator. -
lessThanEqual
PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value. This is equivalent to the SQL "<=" operator. -
lessThanEqual
PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value. This is equivalent to the SQL "<=" operator. -
lessThanEqual
PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value. This is equivalent to the SQL "<=" operator. -
lessThanEqual
PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value. This is equivalent to the SQL "<=" operator. -
lessThanEqual
PUBLIC: Return an expression that compares if the receivers value is less than and equal to the other value. This is equivalent to the SQL "<=" operator. -
like
PUBLIC: Return an expression that compares if the receivers value is like other value. This is equivalent to the SQL "LIKE" operator that except wildcards. The character "%" means any sequence of characters and the character "_" mean any character. i.e. "B%" == "Bob", "B_B" == "BOB"Example:
EclipseLink: employee.get("firstName").like("B%") Java: NA SQL: F_NAME LIKE 'B%'
-
like
PUBLIC: Return an expression that compares if the receivers value is like other value. This is equivalent to the SQL "LIKE ESCAPE" operator that except wildcards. The character "%" means any sequence of characters and the character "_" mean any character. i.e. "B%" == "Bob", "B_B" == "BOB" The escape sequence specifies a set of characters the may be used to indicate that an one of the wildcard characters should be interpreted literally.Example:
EclipseLink: employee.get("firstName").like("B\_SMITH", "\") Java: NA SQL: F_NAME LIKE 'B\_SMITH ESCAPE '\''
-
like
PUBLIC: Return an expression that compares if the receivers value is like other value. This is equivalent to the SQL "LIKE" operator that except wildcards. The character "%" means any sequence of characters and the character "_" mean any character. i.e. "B%" == "Bob", "B_B" == "BOB"Example:
EclipseLink: employee.get("firstName").like("B%") Java: NA SQL: F_NAME LIKE 'B%'
-
regexp
PUBLIC: Return an expression that compares if the receivers value matches the regular expression. This uses the databases support for regular expression. Regular expressions are similar to LIKE except support a much larger scope of comparisons. i.e. "^B.*" == "Bob", "^B.B$" == "BOB"Example:
EclipseLink: employee.get("firstName").regexp("^B.*") Java: Pattern.compile("^B.*").matcher(employee.getFirstName()).matches() SQL: F_NAME REGEXP '^B.*'
-
regexp
PUBLIC: Return an expression that compares if the receivers value matches the regular expression. This uses the databases support for regular expression. Regular expressions are similar to LIKE except support a much larger scope of comparisons. i.e. "^B.*" == "Bob", "^B.B$" == "BOB"Example:
EclipseLink: employee.get("firstName").regexp("^B.*") Java: Pattern.compile("^B.*").matcher(employee.getFirstName()).matches() SQL: F_NAME REGEXP '^B.*'
-
like
PUBLIC: Return an expression that compares if the receivers value is like other value. This is equivalent to the SQL "LIKE ESCAPE" operator that except wildcards. The character "%" means any sequence of characters and the character "_" mean any character. i.e. "B%" == "Bob", "B_B" == "BOB" The escape sequence specifies a set of characters the may be used to indicate that an one of the wildcard characters should be interpreted literally.Example:
EclipseLink: employee.get("firstName").like("B\_SMITH", "\") Java: NA SQL: F_NAME LIKE 'B\_SMITH ESCAPE '\''
-
likeIgnoreCase
PUBLIC: Return an expression that compares if the receivers value is like the other value, ignoring case. This is a case in-sensitive like.Example:
EclipseLink: employee.get("firstName").likeIgnoreCase("%Bob%") Java: none SQL: UPPER(F_NAME) LIKE 'BOB'
-
likeIgnoreCase
PUBLIC: Return an expression that compares if the receivers value is like the other value, ignoring case. This is a case in-sensitive like. -
locate
PUBLIC: Function, returns the position ofstr
inthis
Example:
EclipseLink: employee.get("firstName").locate("ob") Java: employee.getFirstName().indexOf("ob") + 1 SQL: LOCATE('ob', t0.F_NAME)
Note that while in String.locate(str) -1 is returned if not found, and the index starting at 0 if found, in SQL it is 0 if not found, and the index starting at 1 if found.
-
locate
PUBLIC: Function, returns the position ofstr
inthis
, starting the search atfromIndex
.Example:
EclipseLink: employee.get("firstName").locate("ob", 1) Java: employee.getFirstName().indexOf("ob", 1) + 1 SQL: LOCATE('ob', t0.F_NAME, 1)
Note that while in String.locate(str) -1 is returned if not found, and the index starting at 0 if found, in SQL it is 0 if not found, and the index starting at 1 if found.
-
locate
PUBLIC: Function, returns the position ofstr
inthis
, starting the search atfromIndex
.Example:
EclipseLink: employee.get("firstName").locate("ob", 1) Java: employee.getFirstName().indexOf("ob", 1) + 1 SQL: LOCATE('ob', t0.F_NAME, 1)
Note that while in String.locate(str) -1 is returned if not found, and the index starting at 0 if found, in SQL it is 0 if not found, and the index starting at 1 if found.
-
maximum
PUBLIC: This represents the aggregate function Maximum. Can be used only within Report Queries. -
minimum
PUBLIC: This represents the aggregate function Minimum. Can be used only within Report Queries. -
monthsBetween
PUBLIC: Function, returns the decimal number of months between the two dates. -
mapEntry
PUBLIC: Return a Map.Entry containing the key and the value from a mapping that maps to a java.util.Map This expression can only be used as a return value in a ReportQuery and cannot be used as part of the WHERE clause in any query EclipseLink: eb.get("mapAttribute").mapEntry() -
mapKey
PUBLIC: Return the key from a mapping that maps to a java.util.Map This expression can be used either in as a return value in a ReportQuery or in the WHERE clause in a query EclipseLink: eb.get("mapAttribute").mapKey() -
newTime
PUBLIC: funcation return a date converted to a new timezone. Equivalent of the Oracle NEW_TIME functionExample:
EclipseLink: employee.get("date").newTime("EST", "PST") Java: NA SQL: NEW_TIME(date, 'EST', 'PST')
-
nextDay
PUBLIC: Function, returns the date with the next day from the source date as the day name given. -
noneOf
PUBLIC: Returns an expression equivalent to none ofattributeName
holding true forcriteria
.For every expression with an anyOf, its negation has either an allOf or a noneOf. The following two examples will illustrate as the second is the negation of the first:
AnyOf Example: Employees with a '613' area code phone number.
ReadAllQuery query = new ReadAllQuery(Employee.class); ExpressionBuilder employee = new ExpressionBuilder(); Expression exp = employee.anyOf("phoneNumbers").get("areaCode").equal("613");
NoneOf Example: Employees with no '613' area code phone numbers.
ExpressionBuilder employee = new ExpressionBuilder(); ExpressionBuilder phones = new ExpressionBuilder(); Expression exp = employee.noneOf("phoneNumbers", phones.get("areaCode").equal("613")); SQL: SELECT ... EMPLOYEE t0 WHERE NOT EXISTS (SELECT ... PHONE t1 WHERE (t0.EMP_ID = t1.EMP_ID) AND (t1.AREACODE = '613'))
noneOf is the universal counterpart to the existential anyOf. To have the condition evaluated for each instance it must be put inside of a subquery, which can be expressed as not exists (any of attributeName some condition). (All x such that !y = !Exist x such that y).
Likewise the syntax employee.noneOf("phoneNumbers").get("areaCode").equal("613") is not supported for the
equal
must go inside a subQuery.This method saves you from writing the sub query yourself. The above is equivalent to the following expression:
ExpressionBuilder employee = new ExpressionBuilder(); ExpressionBuilder phone = new ExpressionBuilder(); ReportQuery subQuery = new ReportQuery(Phone.class, phone); subQuery.retreivePrimaryKeys(); subQuery.setSelectionCriteria(phone.equal(employee.anyOf("phoneNumbers").and( phone.get("areaCode").equal("613"))); Expression exp = employee.notExists(subQuery);
- Parameters:
criteria
- must have its own builder, as it will become the separate selection criteria of a subQuery.- Returns:
- a notExists subQuery expression
-
normalize
INTERNAL: Normalize into a structure that is printable. Also compute printing information such as outer joins. -
not
PUBLIC: Return an expression that is the boolean logical negation of the expression. This is equivalent to the SQL "NOT" operator and the Java "!" operator.Example:
EclipseLink: employee.get("age").equal(24).not() Java: (! (employee.getAge() == 24)) SQL: NOT (AGE = 24)
-
notBetween
PUBLIC: Return an expression that compares if the receivers value is not between two other values. Equivalent to between negated.- See Also:
-
notBetween
PUBLIC: Return an expression that compares if the receivers value is not between two other values. Equivalent to between negated.- See Also:
-
notBetween
PUBLIC: Return an expression that compares if the receivers value is not between two other values. Equivalent to between negated.- See Also:
-
notBetween
PUBLIC: Return an expression that compares if the receivers value is not between two other values. Equivalent to between negated.- See Also:
-
notBetween
PUBLIC: Return an expression that compares if the receivers value is not between two other values. Equivalent to between negated.- See Also:
-
notBetween
PUBLIC: Return an expression that compares if the receivers value is not between two other values. Equivalent to between negated.- See Also:
-
notBetween
PUBLIC: Return an expression that compares if the receivers value is not between two other values. Equivalent to between negated.- See Also:
-
notBetween
PUBLIC: Return an expression that compares if the receivers value is not between two other values. Equivalent to between negated.- See Also:
-
notBetween
PUBLIC: Return an expression that compares if the receivers value is not between two other values. Equivalent to between negated.- See Also:
-
notEmpty
PUBLIC: A logical expression for the collectionattributeName
not being empty. Equivalent tosize(attributeName).greaterThan(0)
Example:
This is a case where a fast operation in java does not translate to an equally fast operation in SQL, requiring a correlated subselect.EclipseLink: employee.notEmpty("phoneNumbers") Java: employee.getPhoneNumbers().size() > 0 SQL: SELECT ... FROM EMP t0 WHERE ( (SELECT COUNT(*) FROM PHONE t1 WHERE (t0.EMP_ID = t1.EMP_ID)) > 0)
- See Also:
-
notEqual
PUBLIC: Return an expression that compares if the receivers value is not equal to the other value. This is equivalent to the SQL "<>" operator- See Also:
-
notEqual
PUBLIC: Return an expression that compares if the receivers value is not equal to the other value. This is equivalent to the SQL "<>" operator- See Also:
-
notEqual
PUBLIC: Return an expression that compares if the receivers value is not equal to the other value. This is equivalent to the SQL "<>" operator- See Also:
-
notEqual
PUBLIC: Return an expression that compares if the receivers value is not equal to the other value. This is equivalent to the SQL "<>" operator- See Also:
-
notEqual
PUBLIC: Return an expression that compares if the receivers value is not equal to the other value. This is equivalent to the SQL "<>" operator- See Also:
-
notEqual
PUBLIC: Return an expression that compares if the receivers value is not equal to the other value. This is equivalent to the SQL "<>" operator- See Also:
-
notEqual
PUBLIC: Return an expression that compares if the receivers value is not equal to the other value. This is equivalent to the SQL "<>" operator- See Also:
-
notEqual
PUBLIC: Return an expression that compares if the receivers value is not equal to the other value. This is equivalent to the SQL "<>" operator- See Also:
-
notEqual
PUBLIC: Return an expression that compares if the receivers value is not equal to the other value. This is equivalent to the SQL "<>" operator- See Also:
-
notEqual
PUBLIC: Return an expression that compares if the receivers value is not equal to the other value. This is equivalent to the SQL "<>" operator- See Also:
-
notExists
PUBLIC: Return a sub query expression. A sub query using a report query to define a subselect within another queries expression or select's where clause. The sub query (the report query) will use its own expression builder be can reference expressions from the base expression builder.Example:
ExpressionBuilder builder = new ExpressionBuilder(); ReportQuery subQuery = new ReportQuery(Employee.class, new ExpressionBuilder()); subQuery.setSelectionCriteria(subQuery.getExpressionBuilder().get("name").equal(builder.get("name"))); builder.notExists(subQuery);
-
notIn
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
notIn
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
notIn
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
notIn
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
notIn
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
notIn
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
notIn
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
notIn
-
notIn
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
notIn
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
notIn
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. The collection can be a collection of constants or expressions. This is equivalent to the SQL "IN" operator and Java "contains" operator.Example:
EclipseLink: employee.get("age").in(ages) Java: ages.contains(employee.getAge()) SQL: AGE IN (55, 18, 30)
-
notIn
-
notLike
PUBLIC: Return an expression that compares if the receivers value is not like the other value. Equivalent to like negated.- See Also:
-
notLike
PUBLIC: Return an expression that compares if the receivers value is not like the other value. Equivalent to like negated.- See Also:
-
notLike
PUBLIC: Return an expression that compares if the receivers value is not like the other value. Equivalent to like negated.- Parameters:
value
- string to compareescapeSequence
- the escape character to use- See Also:
-
notLike
PUBLIC: Return an expression that compares if the receivers value is not like the other value. Equivalent to like negated.- Parameters:
value
- string to compareescapeSequence
- the escape character to use- See Also:
-
notNull
PUBLIC: Return an expression representing a comparison to nullExample:
EclipseLink: employee.get("age").notNull() Java: employee.getAge() != null SQL: AGE IS NOT NULL
-
or
PUBLIC: Return an expression that is the boolean logical combination of both expressions. This is equivalent to the SQL "OR" operator and the Java "||" operator.Example:
EclipseLink: employee.get("firstName").equal("Bob").OR(employee.get("lastName").equal("Smith")) Java: (employee.getFirstName().equals("Bob")) || (employee.getLastName().equals("Smith")) SQL: F_NAME = 'Bob' OR L_NAME = 'Smith'
-
performOperator
INTERNAL: -
postCopyIn
-
postfixSQL
ADVANCED: Inserts the SQL as is directly into the expression. The sql will be printed immediately after (postfixed to) the sql for this. Warning: Allowing an unverified SQL string to be passed into this method makes your application vulnerable to SQL injection attacks. -
prefixSQL
ADVANCED: Insert the SQL as is directly into the expression. The sql will be printed immediately before (prefixed to) the sql for this. Warning: Allowing an unverified SQL string to be passed into this method makes your application vulnerable to SQL injection attacks. -
printSQL
INTERNAL: Print SQL -
printJava
INTERNAL: Print java for project class generation -
rebuildOn
INTERNAL: This expression is built on a different base than the one we want. Rebuild it and return the root of the new tree If receiver is a complex expression, use cloneUsing(newBase) instead.- See Also:
-
resetPlaceHolderBuilder
INTERNAL: Search the tree for any expressions (like SubSelectExpressions) that have been built using a builder that is not attached to the query. This happens in case of an Exists call using a new ExpressionBuilder(). This builder needs to be replaced with one from the query. -
ref
ADVANCED: For Object-relational support. -
registerIn
-
replace
PUBLIC: Function, returns the string with occurances of the first substring replaced with the second substring. -
replicate
PUBLIC: return the result of this query repeated a given number of times. Equivalent of the Sybase REPLICATE functionExample:
EclipseLink: employee.get("name").replicate(2) Java: NA SQL: REPLICATE(name, 2)
-
replicate
PUBLIC: return the result of this query repeated a given number of times. Equivalent of the Sybase REPLICATE functionExample:
EclipseLink: employee.get("name").replicate(2) Java: NA SQL: REPLICATE(name, 2)
-
resetCache
protected void resetCache()Reset cached information here so that we can be sure we're accurate. -
reverse
PUBLIC: Function return the reverse of the query result. Equivalent of the Sybase REVERSE functionExample:
EclipseLink: employee.get("name").reverse() Java: NA SQL: REVERSE(name)
-
right
PUBLIC: Function return a given number of characters starting at the right of a string. Equivalent to the Sybase RIGHT functionExample:
EclipseLink: employee.get("name").right(2) Java: NA SQL: RIGHT(name, 2)
-
right
PUBLIC: Function return a given number of characters starting at the right of a string. Equivalent to the Sybase RIGHT functionExample:
EclipseLink: employee.get("name").right(2) Java: NA SQL: RIGHT(name, 2)
-
rightPad
PUBLIC: Function, returns the string padded with the substring to the size. -
rightPad
PUBLIC: Function, returns the string padded with the substring to the size. -
rightTrim
PUBLIC: Function, returns the string right trimmed for white space. -
rightTrim
PUBLIC: Function, returns the string with the substring trimed from the right. -
roundDate
PUBLIC: Function, returns the date rounded to the year, month or day. -
selectIfOrderedBy
public boolean selectIfOrderedBy()PUBLIC: Return whether this expression should be included in the SELECT clause if it is used in an ORDER BY clause -
setLocalBase
INTERNAL: Set the local base expression, ie the one on the other side of the operator Most types will ignore this, since they don't need it. -
setSelectIfOrderedBy
public void setSelectIfOrderedBy(boolean selectIfOrderedBy) PUBLIC: Set whether this expression should be included in the SELECT clause of a query that uses it in the ORDER BY clause. -
shallowClone
INTERNAL: -
size
PUBLIC: A logical expression for the size of collectionattributeName
.Example:
This is a case where a fast operation in java does not translate to an equally fast operation in SQL, requiring a correlated subselect.EclipseLink: employee.size("phoneNumbers") Java: employee.getPhoneNumbers().size() SQL: SELECT ... FROM EMP t0 WHERE ... (SELECT COUNT(*) FROM PHONE t1 WHERE (t0.EMP_ID = t1.EMP_ID))
-
size
PUBLIC: A logical expression for the size of collection expression.Example:
This is a case where a fast operation in java does not translate to an equally fast operation in SQL, requiring a correlated subselect.EclipseLink: employee.size(Class returnType) Java: employee.getPhoneNumbers().size() SQL: SELECT ... FROM EMP t0 WHERE ... (SELECT COUNT(*) FROM PHONE t1 WHERE (t0.EMP_ID = t1.EMP_ID))
-
standardDeviation
PUBLIC: This represents the aggregate function StandardDeviation. Can be used only within Report Queries. -
subQuery
PUBLIC: Return a sub query expression. A sub query using a report query to define a subselect within another queries expression or select's where clause. The sub query (the report query) will use its own expression builder be can reference expressions from the base expression builder.Example:
ExpressionBuilder builder = new ExpressionBuilder(); ReportQuery subQuery = new ReportQuery(Employee.class, new ExpressionBuilder()); subQuery.addMaximum("salary"); builder.get("salary").equal(builder.subQuery(subQuery));
-
substring
PUBLIC: Function, returns the substring from the source string. EclipseLink: employee.get("firstName").substring(1, 2) Java: NA SQL: SUBSTR(FIRST_NAME, 1, 2) -
substring
PUBLIC: Function, returns the substring from the source string. EclipseLink: employee.get("firstName").substring(1, 2) Java: NA SQL: SUBSTR(FIRST_NAME, 1, 2) -
substring
PUBLIC: Function, returns the substring from the source string. EclipseLink: employee.get("firstName").substring(1) Java: NA SQL: SUBSTR(FIRST_NAME, 1) -
substring
PUBLIC: Function, returns the substring from the source string. EclipseLink: employee.get("firstName").substring(1) Java: NA SQL: SUBSTR(FIRST_NAME, 1) -
sum
PUBLIC: This represents the aggregate function Sum. Can be used only within Report Queries. -
toCharacter
PUBLIC: Function, returns the single character string with the ascii or character set value. -
toDate
PUBLIC: Function, returns date from the string using the default format. -
toChar
PUBLIC: Return an expression that represents the receiver value converted to a character string. This is equivalent to the SQL "TO_CHAR" operator and Java "toString" method.Example:
EclipseLink: employee.get("salary").toChar().equal("100000") Java: employee.getSalary().toString().equals("100000") SQL: TO_CHAR(SALARY) = '100000'
-
toChar
PUBLIC: Return an expression that represents the receiver value converted to a character string, with the database formating options (i.e. 'year', 'yyyy', 'day', etc.). This is equivalent to the SQL "TO_CHAR" operator and Java Date API.Example:
EclipseLink: employee.get("startDate").toChar("day").equal("monday") Java: employee.getStartDate().getDay().equals("monday") SQL: TO_CHAR(START_DATE, 'day') = 'monday'
-
toLowerCase
PUBLIC: Return an expression that represents the receiver value converted to lower case. This is equivalent to the SQL "LOWER" operator and Java "toLowerCase" method. This is only allowed for String attribute values.Example:
EclipseLink: employee.get("firstName").toLowerCase().equal("bob") Java: employee.getFirstName().toLowerCase().equals("bob") SQL: LOWER(F_NAME) = 'bob'
-
toNumber
PUBLIC: Function, returns the number converted from the string. -
toString
PUBLIC: Print a debug form of the expression tree. -
toString
INTERNAL: Print a debug form of the expression tree.- Throws:
IOException
-
toUpperCase
PUBLIC: Return an expression that represents the receiver value converted to upper case. This is equivalent to the SQL "UPPER" operator and Java "toUpperCase" method. This is only allowed for String attribute values.Example:
EclipseLink: employee.get("firstName").toUpperCase().equal("BOB") Java: employee.getFirstName().toUpperCase().equals("BOB") SQL: UPPER(F_NAME) = 'BOB'
-
toUppercaseCasedWords
PUBLIC: Function, returns the string with the first letter of each word capitalized. -
translate
PUBLIC: Function, returns the string with each char from the from string converted to the char in the to string. -
trim
PUBLIC: Function, returns the string trimmed for white space. -
trim
PUBLIC: Function, returns the string right and left trimmed for the substring. -
extractXml
PUBLIC: XMLType Function, extracts a secton of XML from a larget XML document- Parameters:
xpath
- XPath expression representing the node to be returned
-
extract
PUBLIC: Extract the date part from the date/time value. EXTRACT is part of the SQL standard, so should be supported by most databases.- Parameters:
part
- is the date part to extract, "YEAR", "MONTH", "DAY", "HOUR", "MINUTE", "SECOND", "TIMEZONE_HOUR", "TIMEZONE_MINUTE".
-
cast
PUBLIC: Cast the value to the database type. CAST is part of the SQL standard, so should be supported by most databases.- Parameters:
type
- is the database type name, this is database specific but should include, "CHAR", "VARCHAR", "NUMERIC", "INTEGER", "DATE", "TIME", "TIMESTAMP", the type may include a size and scale.
-
extractValue
PUBLIC: XMLType Function, extracts a value from an XMLType field- Parameters:
xpath
- XPath expression
-
existsNode
PUBLIC: XMLType Function, gets the number of nodes returned by the given xpath expression returns 0 if there are none- Parameters:
xpath
- Xpath expression
-
isFragment
PUBLIC: XMLType Function - evaluates to 0 if the xml is a well formed document and 1 if the document is a fragment -
getStringVal
PUBLIC: XMLType Function - gets a string value from an XMLType -
getNumberVal
PUBLIC: XMLType Function - gets a number value from an XMLType -
truncateDate
PUBLIC: return the date truncated to the indicated datePart. Equivalent to the Sybase TRUNC function for datesExample:
EclipseLink: employee.get("date").truncDate(year) Java: NA SQL: TRUNC(date, year)
-
twist
INTERNAL: We are given an expression that comes from a different context than the one in which this was built, e.g. it is the selection criteria of a mapping, or the criteria on which multiple tables are joined in a descriptor. We need to transform it so it refers to the objects we are dealing with, and AND it into the rest of our expression. We want to replace the original base expression with (newBase), and any parameters will be given values based on the context which (this) provides. For example, suppose that the main expression is emp.address.streetName = 'something' and we are trying to twist the selection criteria for the mapping 'address' in Employee. Because that mapping selects addresses, we will use the 'address' node as the base. Values for any parameters will come from the 'emp' node, which was the base of the original expression. Note that the values need not be constants, they can be fields. We do this by taking the tree we're trying to merge and traverse it more or less re-executing it it with the appropriate initial receiver and context. Return the root of the new expression tree. This will probably need to be AND'ed with the root of the old tree. -
twistedForBaseAndContext
public Expression twistedForBaseAndContext(Expression newBase, Expression context, Expression oldBase) INTERNAL: Rebuild myself against the base, with the values of parameters supplied by the context expression. This is used for transforming a standalone expression (e.g. the join criteria of a mapping) into part of some larger expression. You normally would not call this directly, instead calling twist See the comment there for more details" -
validateNode
public void validateNode()INTERNAL: Do any required validation for this node. Throw an exception for any incorrect constructs. -
value
PUBLIC: Function, this represents the value function, used in nestedtable -
value
PUBLIC: Return an expression on the constant.Example:
reportQuery.addItem("a constant", builder.value("a constant"));
-
value
PUBLIC: Return an expression on the constant.Example:
reportQuery.addItem("a constant", builder.value("a constant"));
-
value
PUBLIC: Return an expression on the constant.Example:
reportQuery.addItem("a constant", builder.value("a constant"));
-
value
PUBLIC: Return an expression on the constant.Example:
reportQuery.addItem("a constant", builder.value("a constant"));
-
value
PUBLIC: Return an expression on the constant.Example:
reportQuery.addItem("a constant", builder.value("a constant"));
-
value
PUBLIC: Return an expression on the constant.Example:
reportQuery.addItem("a constant", builder.value("a constant"));
-
value
PUBLIC: Return an expression on the constant.Example:
reportQuery.addItem("a constant", builder.value("a constant"));
-
value
PUBLIC: Return an expression on the constant.Example:
reportQuery.addItem("a constant", builder.value("a constant"));
-
value
PUBLIC: Return an expression on the constant.Example:
reportQuery.addItem("a constant", builder.value("a constant"));
-
literal
ADVANCED: Return an expression on the literal. A literal is a specific SQL syntax string that will be printed as is without quotes in the SQL. It can be useful for printing database key words or global variables.Example:
reportQuery.addItem("currentTime", builder.literal("SYSDATE"));
-
alias
ADVANCED: Return an expression for the alias. This allows an alias used in the select clause to be used in other clauses. -
valueFromObject
public Object valueFromObject(Object object, AbstractSession session, AbstractRecord translationRow, int valueHolderPolicy, boolean isObjectUnregistered) INTERNAL: Return the value for in memory comparison. This is only valid for valueable expressions. New parameter added for feature 2612601- Parameters:
isObjectUnregistered
- true if object possibly not a clone, but is being conformed against the unit of work cache.
-
valueFromObject
public Object valueFromObject(Object object, AbstractSession session, AbstractRecord translationRow, int valueHolderPolicy) INTERNAL: Return the value for in memory comparison. This is only valid for valueable expressions. -
variance
PUBLIC: Function, this represents the aggregate function Variance. Can be used only within Report Queries. -
writeDescriptionOn
INTERNAL: Used to print a debug form of the expression tree.- Throws:
IOException
-
writeField
protected void writeField(ExpressionSQLPrinter printer, DatabaseField field, SQLSelectStatement statement) INTERNAL: Append the field name to the writer. Should be overridden for special operators such as functions. -
writeAlias
protected void writeAlias(ExpressionSQLPrinter printer, DatabaseField field, SQLSelectStatement statement) INTERNAL: Append the field's alias to the writer. This is used for pessimistic locking. -
writeFields
public void writeFields(ExpressionSQLPrinter printer, List<DatabaseField> newFields, SQLSelectStatement statement) INTERNAL: called from SQLSelectStatement.writeFieldsFromExpression(...) -
writeSubexpressionsTo
INTERNAL: Used in SQL printing.- Throws:
IOException
-
any
PUBLIC: Return an expression that is used with a comparison expression. The ANY keyword denotes that the search condition is TRUE if the comparison is TRUE for at least one of the values that is returned. If the subquery returns no value, the search condition is FALSE -
any
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
any
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
any
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
any
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
any
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
any
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
any
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
any
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
any
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator.Example:
EclipseLink: employee.get("age").in(ages) Java: ages.contains(employee.getAge()) SQL: AGE IN (55, 18, 30)
-
any
-
union
PUBLIC: Return a union expression with the subquery. -
intersect
PUBLIC: Return a intersect expression with the subquery. -
intersectAll
PUBLIC: Return a intersect all expression with the subquery. -
intersect
PUBLIC: Return a intersect expression with the subquery. -
except
PUBLIC: Return a except expression with the subquery. -
exceptAll
PUBLIC: Return a except all expression with the subquery. -
except
PUBLIC: Return a except expression with the subquery. -
union
PUBLIC: Return a union expression with the subquery. -
unionAll
PUBLIC: Return a union all expression with the subquery. -
unionAll
PUBLIC: Return a union all expression with the subquery. -
intersectAll
PUBLIC: Return a intersect all expression with the subquery. -
exceptAll
PUBLIC: Return a except all expression with the subquery. -
any
-
some
PUBLIC: Return an expression that is used with a comparison expression. The SOME keyword denotes that the search condition is TRUE if the comparison is TRUE for at least one of the values that is returned. If the subquery returns no value, the search condition is FALSE -
some
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
some
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
some
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
some
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
some
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
some
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
some
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
some
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
some
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator.Example:
EclipseLink: employee.get("age").in(ages) Java: ages.contains(employee.getAge()) SQL: AGE IN (55, 18, 30)
-
some
-
some
-
all
PUBLIC: Return an expression that is used with a comparison expression. The SOME keyword denotes that the search condition is TRUE if the comparison is TRUE for at least one of the values that is returned. If the subquery returns no value, the search condition is FALSE -
all
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
all
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
all
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
all
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
all
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
all
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
all
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
all
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator. -
all
PUBLIC: Return an expression that checks if the receivers value is contained in the collection. This is equivalent to the SQL "IN" operator and Java "contains" operator.Example:
EclipseLink: employee.get("age").in(ages) Java: ages.contains(employee.getAge()) SQL: AGE IN (55, 18, 30)
-
all
-
all
-
getLeafDescriptor
public ClassDescriptor getLeafDescriptor(DatabaseQuery query, ClassDescriptor rootDescriptor, AbstractSession session) INTERNAL: Lookup the descriptor for this item by traversing its expression recursively. -
getLeafMapping
public DatabaseMapping getLeafMapping(DatabaseQuery query, ClassDescriptor rootDescriptor, AbstractSession session) INTERNAL: Lookup the mapping for this item by traversing its expression recursively. If an aggregate of foreign mapping is found it is traversed.
-