<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_252) on Fri Jul 16 09:38:42 UTC 2021 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Expression (EclipseLink 3.0.2, API Reference)</title>
<meta name="date" content="2021-07-16">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="Expression (EclipseLink 3.0.2, API Reference)";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i109":10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":9,"i120":9,"i121":9,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":6,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":10,"i137":10,"i138":10,"i139":10,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":10,"i146":10,"i147":10,"i148":10,"i149":10,"i150":10,"i151":10,"i152":10,"i153":10,"i154":10,"i155":10,"i156":10,"i157":10,"i158":10,"i159":10,"i160":10,"i161":10,"i162":10,"i163":10,"i164":10,"i165":10,"i166":10,"i167":10,"i168":10,"i169":10,"i170":10,"i171":10,"i172":10,"i173":10,"i174":10,"i175":10,"i176":10,"i177":10,"i178":10,"i179":10,"i180":10,"i181":10,"i182":10,"i183":10,"i184":10,"i185":10,"i186":10,"i187":10,"i188":10,"i189":10,"i190":10,"i191":10,"i192":10,"i193":10,"i194":10,"i195":10,"i196":10,"i197":10,"i198":10,"i199":10,"i200":10,"i201":10,"i202":10,"i203":10,"i204":10,"i205":10,"i206":10,"i207":10,"i208":10,"i209":10,"i210":10,"i211":10,"i212":10,"i213":10,"i214":10,"i215":10,"i216":10,"i217":10,"i218":10,"i219":10,"i220":10,"i221":10,"i222":10,"i223":10,"i224":10,"i225":10,"i226":10,"i227":10,"i228":10,"i229":10,"i230":10,"i231":10,"i232":10,"i233":10,"i234":10,"i235":10,"i236":10,"i237":10,"i238":10,"i239":10,"i240":10,"i241":10,"i242":10,"i243":10,"i244":10,"i245":10,"i246":10,"i247":10,"i248":10,"i249":10,"i250":10,"i251":10,"i252":10,"i253":10,"i254":10,"i255":10,"i256":10,"i257":10,"i258":10,"i259":10,"i260":10,"i261":10,"i262":10,"i263":10,"i264":10,"i265":10,"i266":10,"i267":10,"i268":10,"i269":10,"i270":10,"i271":10,"i272":10,"i273":10,"i274":10,"i275":10,"i276":10,"i277":10,"i278":10,"i279":10,"i280":10,"i281":10,"i282":10,"i283":10,"i284":10,"i285":10,"i286":10,"i287":10,"i288":10,"i289":10,"i290":10,"i291":10,"i292":10,"i293":10,"i294":10,"i295":10,"i296":10,"i297":10,"i298":10,"i299":10,"i300":10,"i301":10,"i302":10,"i303":10,"i304":10,"i305":10,"i306":10,"i307":10,"i308":10,"i309":10,"i310":10,"i311":10,"i312":10,"i313":10,"i314":10,"i315":10,"i316":10,"i317":10,"i318":6,"i319":6,"i320":10,"i321":10,"i322":10,"i323":10,"i324":10,"i325":10,"i326":10,"i327":10,"i328":6,"i329":10,"i330":10,"i331":10,"i332":10,"i333":10,"i334":10,"i335":10,"i336":10,"i337":10,"i338":10,"i339":10,"i340":10,"i341":10,"i342":10,"i343":10,"i344":10,"i345":10,"i346":10,"i347":10,"i348":10,"i349":10,"i350":10,"i351":10,"i352":10,"i353":10,"i354":10,"i355":10,"i356":10,"i357":10,"i358":10,"i359":10,"i360":10,"i361":10,"i362":10,"i363":10,"i364":10,"i365":10,"i366":10,"i367":10,"i368":10,"i369":10,"i370":10,"i371":10,"i372":10,"i373":10,"i374":10,"i375":10,"i376":10,"i377":10,"i378":10,"i379":10,"i380":10,"i381":10,"i382":10,"i383":10,"i384":10,"i385":10,"i386":10,"i387":10,"i388":10,"i389":10,"i390":10,"i391":10,"i392":10,"i393":10,"i394":10,"i395":10,"i396":10,"i397":10,"i398":10,"i399":10,"i400":10,"i401":10,"i402":10,"i403":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage">EclipseLink 3.0.2, API Reference</div>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../org/eclipse/persistence/expressions/ExpressionBuilder.html" title="class in org.eclipse.persistence.expressions"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/eclipse/persistence/expressions/Expression.html" target="_top">Frames</a></li>
<li><a href="Expression.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.eclipse.persistence.expressions</div>
<h2 title="Class Expression" class="title">Class Expression</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.eclipse.persistence.expressions.Expression</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true" title="class or interface in java.lang">Cloneable</a></dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd>org.eclipse.persistence.internal.expressions.BaseExpression</dd>
</dl>
<hr>
<br>
<pre>public abstract class <span class="typeNameLabel">Expression</span>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html?is-external=true" title="class or interface in java.lang">Cloneable</a></pre>
<div class="block"><p>
 <b>Purpose</b>: Define an object-level representation of a database query where clause.</p>
 <p>
 <b>Description</b>: 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.</p>
 <p>
 <b>Responsibilities</b>:
 <ul>
 <li> Store the selection criteria in a tree-like structure.
 <li> Support public manipulation protocols for all comparison and function operators.
 <li> Use operator overloading to support all primitive types as well as objects.
 </ul></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../serialized-form.html#org.eclipse.persistence.expressions.Expression">Serialized Form</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected org.eclipse.persistence.internal.helper.DatabaseTable</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#currentAlias">currentAlias</a></span></code>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#hashCode">hashCode</a></span></code>
<div class="block">PERF: Cache the hashCode.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected org.eclipse.persistence.internal.helper.DatabaseTable</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lastTable">lastTable</a></span></code>
<div class="block">Temporary values for table aliasing</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#selectIfOrderedBy">selectIfOrderedBy</a></span></code>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#shouldUseUpperCaseForIgnoreCase">shouldUseUpperCaseForIgnoreCase</a></span></code>
<div class="block">Use the upper() function for case insensitive expression operations (default).</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#Expression--">Expression</a></span>()</code>
<div class="block">Base Expression Constructor.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#addDate-java.lang.String-int-">addDate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;datePart,
       int&nbsp;numberToAdd)</code>
<div class="block">PUBLIC:
 Function, return an expression that adds to a date based on
 the specified datePart.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#addDate-java.lang.String-java.lang.Object-">addDate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;datePart,
       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;numberToAdd)</code>
<div class="block">PUBLIC:
 Function, return an expression that adds to a date based on
 the specified datePart.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#addMonths-int-">addMonths</a></span>(int&nbsp;months)</code>
<div class="block">PUBLIC:
 Function, to add months to a date.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#addMonths-java.lang.Object-">addMonths</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;months)</code>
<div class="block">PUBLIC:
 Function, to add months to a date.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#alias-java.lang.String-">alias</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;alias)</code>
<div class="block">ADVANCED:
 Return an expression for the alias.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>org.eclipse.persistence.internal.helper.DatabaseTable</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#aliasForTable-org.eclipse.persistence.internal.helper.DatabaseTable-">aliasForTable</a></span>(org.eclipse.persistence.internal.helper.DatabaseTable&nbsp;table)</code>
<div class="block">INTERNAL:
 Find the alias for a given table</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#all-boolean:A-">all</a></span>(boolean[]&nbsp;theBooleans)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#all-byte:A-">all</a></span>(byte[]&nbsp;theBytes)</code>
<div class="block">PUBLIC:
 Return an expression that is used with a comparison expression.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#all-char:A-">all</a></span>(char[]&nbsp;theChars)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#all-double:A-">all</a></span>(double[]&nbsp;theDoubles)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#all-org.eclipse.persistence.expressions.Expression-">all</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</code>&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#all-float:A-">all</a></span>(float[]&nbsp;theFloats)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#all-int:A-">all</a></span>(int[]&nbsp;theInts)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#all-java.util.List-">all</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;theObjects)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#all-long:A-">all</a></span>(long[]&nbsp;theLongs)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#all-java.lang.Object:A-">all</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;theObjects)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#all-org.eclipse.persistence.queries.ReportQuery-">all</a></span>(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;subQuery)</code>&nbsp;</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#all-short:A-">all</a></span>(short[]&nbsp;theShorts)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#allOf-java.lang.String-org.eclipse.persistence.expressions.Expression-">allOf</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName,
     <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;criteria)</code>
<div class="block">PUBLIC: Returns an expression equivalent to all of <code>attributeName</code>
 holding true for <code>criteria</code>.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#and-org.eclipse.persistence.expressions.Expression-">and</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theExpression)</code>
<div class="block">PUBLIC:
 Return an expression that is the boolean logical combination of both expressions.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#any-boolean:A-">any</a></span>(boolean[]&nbsp;theBooleans)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#any-byte:A-">any</a></span>(byte[]&nbsp;theBytes)</code>
<div class="block">PUBLIC:
 Return an expression that is used with a comparison expression.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#any-char:A-">any</a></span>(char[]&nbsp;theChars)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#any-double:A-">any</a></span>(double[]&nbsp;theDoubles)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#any-org.eclipse.persistence.expressions.Expression-">any</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</code>&nbsp;</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#any-float:A-">any</a></span>(float[]&nbsp;theFloats)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#any-int:A-">any</a></span>(int[]&nbsp;theInts)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#any-java.util.List-">any</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;theObjects)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#any-long:A-">any</a></span>(long[]&nbsp;theLongs)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i29" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#any-java.lang.Object:A-">any</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;theObjects)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i30" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#any-org.eclipse.persistence.queries.ReportQuery-">any</a></span>(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;subQuery)</code>&nbsp;</td>
</tr>
<tr id="i31" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#any-short:A-">any</a></span>(short[]&nbsp;theShorts)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i32" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#anyOf-java.lang.String-">anyOf</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName)</code>
<div class="block">PUBLIC:
 Return an expression representing traversal of a 1:many or many:many relationship.</div>
</td>
</tr>
<tr id="i33" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#anyOf-java.lang.String-boolean-">anyOf</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName,
     boolean&nbsp;shouldJoinBeIndependent)</code>
<div class="block">ADVANCED:
 Return an expression representing traversal of a 1:many or many:many relationship.</div>
</td>
</tr>
<tr id="i34" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#anyOfAllowingNone-java.lang.String-">anyOfAllowingNone</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName)</code>
<div class="block">ADVANCED:
 Return an expression representing traversal of a 1:many or many:many relationship.</div>
</td>
</tr>
<tr id="i35" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#anyOfAllowingNone-java.lang.String-boolean-">anyOfAllowingNone</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName,
                 boolean&nbsp;shouldJoinBeIndependent)</code>
<div class="block">ADVANCED:
 Return an expression representing traversal of a 1:many or many:many relationship.</div>
</td>
</tr>
<tr id="i36" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#as-java.lang.String-">as</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;alias)</code>
<div class="block">ADVANCED:
 Assign an alias to the expression in the select clause.</div>
</td>
</tr>
<tr id="i37" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#ascending--">ascending</a></span>()</code>
<div class="block">PUBLIC:
 This can only be used within an ordering expression.</div>
</td>
</tr>
<tr id="i38" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#asciiValue--">asciiValue</a></span>()</code>
<div class="block">PUBLIC:
 Function, returns the single character strings ascii value.</div>
</td>
</tr>
<tr id="i39" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#asOf-org.eclipse.persistence.history.AsOfClause-">asOf</a></span>(<a href="../../../../org/eclipse/persistence/history/AsOfClause.html" title="class in org.eclipse.persistence.history">AsOfClause</a>&nbsp;pastTime)</code>
<div class="block">Sets all tables represented by this expression to be queried as of a past
 time.</div>
</td>
</tr>
<tr id="i40" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#assignAlias-java.lang.String-org.eclipse.persistence.internal.helper.DatabaseTable-">assignAlias</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
           org.eclipse.persistence.internal.helper.DatabaseTable&nbsp;tableOrExpression)</code>
<div class="block">INTERNAL:
 Alias a particular table within this node</div>
</td>
</tr>
<tr id="i41" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#assignTableAliasesStartingAt-int-">assignTableAliasesStartingAt</a></span>(int&nbsp;initialValue)</code>
<div class="block">INTERNAL:
 Assign aliases to any tables which I own.</div>
</td>
</tr>
<tr id="i42" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#average--">average</a></span>()</code>
<div class="block">PUBLIC:
 Function, This represents the aggregate function Average.</div>
</td>
</tr>
<tr id="i43" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#between-byte-byte-">between</a></span>(byte&nbsp;leftValue,
       byte&nbsp;rightValue)</code>
<div class="block">PUBLIC:
 Function, between two bytes</div>
</td>
</tr>
<tr id="i44" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#between-char-char-">between</a></span>(char&nbsp;leftChar,
       char&nbsp;rightChar)</code>
<div class="block">PUBLIC:
 Function, between two chars</div>
</td>
</tr>
<tr id="i45" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#between-double-double-">between</a></span>(double&nbsp;leftValue,
       double&nbsp;rightValue)</code>
<div class="block">PUBLIC:
 Function, between two doubles</div>
</td>
</tr>
<tr id="i46" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#between-org.eclipse.persistence.expressions.Expression-org.eclipse.persistence.expressions.Expression-">between</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;leftExpression,
       <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;rightExpression)</code>&nbsp;</td>
</tr>
<tr id="i47" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#between-float-float-">between</a></span>(float&nbsp;leftValue,
       float&nbsp;rightValue)</code>
<div class="block">PUBLIC:
 Function, between two floats</div>
</td>
</tr>
<tr id="i48" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#between-int-int-">between</a></span>(int&nbsp;leftValue,
       int&nbsp;rightValue)</code>
<div class="block">PUBLIC:
 Function, between two ints</div>
</td>
</tr>
<tr id="i49" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#between-long-long-">between</a></span>(long&nbsp;leftValue,
       long&nbsp;rightValue)</code>
<div class="block">PUBLIC:
 Function, between two longs</div>
</td>
</tr>
<tr id="i50" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#between-java.lang.Object-java.lang.Object-">between</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;leftValue,
       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;rightValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receiver's value is between two other values.</div>
</td>
</tr>
<tr id="i51" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#between-short-short-">between</a></span>(short&nbsp;leftValue,
       short&nbsp;rightValue)</code>
<div class="block">PUBLIC:
 Function, between two shorts</div>
</td>
</tr>
<tr id="i52" class="altColor">
<td class="colFirst"><code>org.eclipse.persistence.internal.expressions.ArgumentListFunctionExpression</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#caseConditionStatement--">caseConditionStatement</a></span>()</code>
<div class="block">INTERNAL:
 Creates an ArgumentListFunctionExpression that is capable of creating a case statement of the form:
 </div>
</td>
</tr>
<tr id="i53" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#caseConditionStatement-java.util.Map-java.lang.Object-">caseConditionStatement</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;caseConditions,
                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;defaultItem)</code>
<div class="block">PUBLIC:
 Function Convert values returned by the query to values
 given in the caseConditions Map.</div>
</td>
</tr>
<tr id="i54" class="altColor">
<td class="colFirst"><code>org.eclipse.persistence.internal.expressions.ArgumentListFunctionExpression</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#caseStatement--">caseStatement</a></span>()</code>
<div class="block">INTERNAL:
 Creates an ArgumentListFunctionExpression that is capable of creating a case statement of the form:
 </div>
</td>
</tr>
<tr id="i55" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#caseStatement-java.util.Map-java.lang.Object-">caseStatement</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&nbsp;caseItems,
             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;defaultItem)</code>
<div class="block">PUBLIC:
 Function Convert values returned by the query to values
 given in the caseItems Map.</div>
</td>
</tr>
<tr id="i56" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#cast-java.lang.String-">cast</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;type)</code>
<div class="block">PUBLIC:
 Cast the value to the database type.</div>
</td>
</tr>
<tr id="i57" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#clone--">clone</a></span>()</code>
<div class="block">INTERNAL:
 Clone the expression maintaining clone identity in the inter-connected expression graph.</div>
</td>
</tr>
<tr id="i58" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#cloneUsing-org.eclipse.persistence.expressions.Expression-">cloneUsing</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;newBase)</code>
<div class="block">INTERNAL:
 This expression is built on a different base than the one we want.</div>
</td>
</tr>
<tr id="i59" class="rowColor">
<td class="colFirst"><code>org.eclipse.persistence.internal.expressions.ArgumentListFunctionExpression</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#coalesce--">coalesce</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i60" class="altColor">
<td class="colFirst"><code>org.eclipse.persistence.internal.expressions.ArgumentListFunctionExpression</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#coalesce-java.util.Collection-">coalesce</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&nbsp;expressions)</code>
<div class="block">PUBLIC:
 Function Return null if all arguments are null and the first non-null argument otherwise
 The equivalent of the COALESCE SQL function</div>
</td>
</tr>
<tr id="i61" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#computeHashCode--">computeHashCode</a></span>()</code>
<div class="block">INTERNAL:
 Compute a consistent hash-code for the expression.</div>
</td>
</tr>
<tr id="i62" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#concat-java.lang.Object-">concat</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;left)</code>
<div class="block">PUBLIC:
 Function, returns the concatenation of the two string values.</div>
</td>
</tr>
<tr id="i63" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#containsAllKeyWords-java.lang.String-">containsAllKeyWords</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;spaceSeparatedKeyWords)</code>
<div class="block">PUBLIC:
 Return an expression that performs a key word search.</div>
</td>
</tr>
<tr id="i64" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#containsAnyKeyWords-java.lang.String-">containsAnyKeyWords</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;spaceSeparatedKeyWords)</code>
<div class="block">PUBLIC:
 Return an expression that performs a key word search.</div>
</td>
</tr>
<tr id="i65" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#containsSubstring-org.eclipse.persistence.expressions.Expression-">containsSubstring</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;expression)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value contains the substring.</div>
</td>
</tr>
<tr id="i66" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#containsSubstring-java.lang.String-">containsSubstring</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value contains the substring.</div>
</td>
</tr>
<tr id="i67" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#containsSubstringIgnoringCase-org.eclipse.persistence.expressions.Expression-">containsSubstringIgnoringCase</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;expression)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value contains the substring, ignoring case.</div>
</td>
</tr>
<tr id="i68" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#containsSubstringIgnoringCase-java.lang.String-">containsSubstringIgnoringCase</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value contains the substring, ignoring case.</div>
</td>
</tr>
<tr id="i69" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#convertNodeToUseOuterJoin--">convertNodeToUseOuterJoin</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i70" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#convertToUseOuterJoin--">convertToUseOuterJoin</a></span>()</code>
<div class="block">INTERNAL:
 Modify this expression to use outer joins wherever there are
 equality operations between two field nodes.</div>
</td>
</tr>
<tr id="i71" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#copiedVersionFrom-java.util.Map-">copiedVersionFrom</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&nbsp;alreadyDone)</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i72" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#count--">count</a></span>()</code>
<div class="block">PUBLIC:
 This represents the aggregate function Average.</div>
</td>
</tr>
<tr id="i73" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#create-org.eclipse.persistence.expressions.Expression-java.util.List-org.eclipse.persistence.expressions.ExpressionOperator-">create</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;base,
      <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;arguments,
      <a href="../../../../org/eclipse/persistence/expressions/ExpressionOperator.html" title="class in org.eclipse.persistence.expressions">ExpressionOperator</a>&nbsp;anOperator)</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i74" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#create-org.eclipse.persistence.expressions.Expression-java.lang.Object-org.eclipse.persistence.expressions.ExpressionOperator-">create</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;base,
      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;singleArgument,
      <a href="../../../../org/eclipse/persistence/expressions/ExpressionOperator.html" title="class in org.eclipse.persistence.expressions">ExpressionOperator</a>&nbsp;anOperator)</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i75" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#createWithBaseLast-org.eclipse.persistence.expressions.Expression-java.lang.Object-org.eclipse.persistence.expressions.ExpressionOperator-">createWithBaseLast</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;base,
                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;singleArgument,
                  <a href="../../../../org/eclipse/persistence/expressions/ExpressionOperator.html" title="class in org.eclipse.persistence.expressions">ExpressionOperator</a>&nbsp;anOperator)</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i76" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#currentDate--">currentDate</a></span>()</code>
<div class="block">PUBLIC:
 This gives access to the current date on the database through expression.</div>
</td>
</tr>
<tr id="i77" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#currentDateDate--">currentDateDate</a></span>()</code>
<div class="block">PUBLIC:
 This gives access to the current date only on the database through expression.</div>
</td>
</tr>
<tr id="i78" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#currentTime--">currentTime</a></span>()</code>
<div class="block">PUBLIC:
 This gives access to the current time only on the database through expression.</div>
</td>
</tr>
<tr id="i79" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#currentTimeStamp--">currentTimeStamp</a></span>()</code>
<div class="block">PUBLIC:
 This gives access to the current timestamp on the database through expression.</div>
</td>
</tr>
<tr id="i80" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#dateDifference-java.lang.String-java.util.Date-">dateDifference</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;datePart,
              <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Date.html?is-external=true" title="class or interface in java.util">Date</a>&nbsp;date)</code>
<div class="block">PUBLIC:
 Function, Return the difference between the queried part of a date(i.e.</div>
</td>
</tr>
<tr id="i81" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#dateDifference-java.lang.String-org.eclipse.persistence.expressions.Expression-">dateDifference</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;datePart,
              <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;comparisonExpression)</code>
<div class="block">PUBLIC:
 Function, Return the difference between the queried part of a date(i.e.</div>
</td>
</tr>
<tr id="i82" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#dateName-java.lang.String-">dateName</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;datePart)</code>
<div class="block">PUBLIC:
 return a string that represents the given part of a date.</div>
</td>
</tr>
<tr id="i83" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#datePart-java.lang.String-">datePart</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;datePart)</code>
<div class="block">PUBLIC:
 Function return an integer which represents the requested
 part of the date.</div>
</td>
</tr>
<tr id="i84" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#dateToString--">dateToString</a></span>()</code>
<div class="block">PUBLIC:
 Function, returns the date converted to the string value in the default database format.</div>
</td>
</tr>
<tr id="i85" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#decode-java.util.Map-java.lang.String-">decode</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&nbsp;decodeableItems,
      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;defaultItem)</code>
<div class="block">PUBLIC:
 Function Convert values returned by the query to values given in the decodeableItems Map.</div>
</td>
</tr>
<tr id="i86" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#descending--">descending</a></span>()</code>
<div class="block">PUBLIC:
 This can only be used within an ordering expression.</div>
</td>
</tr>
<tr id="i87" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#descriptionOfNodeType--">descriptionOfNodeType</a></span>()</code>
<div class="block">INTERNAL:
 Used in debug printing of this node.</div>
</td>
</tr>
<tr id="i88" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#difference-java.lang.String-">difference</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;expression)</code>
<div class="block">PUBLIC:
 Function return a value which indicates how much difference there is
 between two expressions.</div>
</td>
</tr>
<tr id="i89" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#distinct--">distinct</a></span>()</code>
<div class="block">PUBLIC:
 Function, This represents the distinct option inside an aggregate function.</div>
</td>
</tr>
<tr id="i90" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#doesConform-java.lang.Object-org.eclipse.persistence.internal.sessions.AbstractSession-org.eclipse.persistence.internal.sessions.AbstractRecord-int-">doesConform</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;object,
           org.eclipse.persistence.internal.sessions.AbstractSession&nbsp;session,
           org.eclipse.persistence.internal.sessions.AbstractRecord&nbsp;translationRow,
           int&nbsp;valueHolderPolicy)</code>
<div class="block">INTERNAL:
 Check if the object conforms to the expression in memory.</div>
</td>
</tr>
<tr id="i91" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#doesConform-java.lang.Object-org.eclipse.persistence.internal.sessions.AbstractSession-org.eclipse.persistence.internal.sessions.AbstractRecord-int-boolean-">doesConform</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;object,
           org.eclipse.persistence.internal.sessions.AbstractSession&nbsp;session,
           org.eclipse.persistence.internal.sessions.AbstractRecord&nbsp;translationRow,
           int&nbsp;valueHolderPolicy,
           boolean&nbsp;objectIsUnregistered)</code>
<div class="block">INTERNAL:
 New parameter added to doesConform for feature 2612601</div>
</td>
</tr>
<tr id="i92" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-boolean-">equal</a></span>(boolean&nbsp;theBoolean)</code>&nbsp;</td>
</tr>
<tr id="i93" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-byte-">equal</a></span>(byte&nbsp;theValue)</code>&nbsp;</td>
</tr>
<tr id="i94" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-char-">equal</a></span>(char&nbsp;theChar)</code>&nbsp;</td>
</tr>
<tr id="i95" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-double-">equal</a></span>(double&nbsp;theValue)</code>&nbsp;</td>
</tr>
<tr id="i96" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-org.eclipse.persistence.expressions.Expression-">equal</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theValue)</code>
<div class="block">Returns an expression that compares if the receiver's value is equal to the other value.</div>
</td>
</tr>
<tr id="i97" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-float-">equal</a></span>(float&nbsp;theValue)</code>&nbsp;</td>
</tr>
<tr id="i98" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-int-">equal</a></span>(int&nbsp;theValue)</code>&nbsp;</td>
</tr>
<tr id="i99" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-long-">equal</a></span>(long&nbsp;theValue)</code>&nbsp;</td>
</tr>
<tr id="i100" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-java.lang.Object-">equal</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receiver's value is equal to the other value.</div>
</td>
</tr>
<tr id="i101" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-short-">equal</a></span>(short&nbsp;theValue)</code>&nbsp;</td>
</tr>
<tr id="i102" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equalOuterJoin-org.eclipse.persistence.expressions.Expression-">equalOuterJoin</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theValue)</code>
<div class="block">INTERNAL:
 Return an expression representing an outer join comparison</div>
</td>
</tr>
<tr id="i103" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equalOuterJoin-java.lang.Object-">equalOuterJoin</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;theValue)</code>
<div class="block">INTERNAL:
 Return an expression representing an outer join comparison</div>
</td>
</tr>
<tr id="i104" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equals-java.lang.Object-">equals</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;expression)</code>
<div class="block">INTERNAL:
 Return if the expression is equal to the other.</div>
</td>
</tr>
<tr id="i105" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equalsIgnoreCase-org.eclipse.persistence.expressions.Expression-">equalsIgnoreCase</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receiver's value is equal to the other value, ignoring case.</div>
</td>
</tr>
<tr id="i106" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equalsIgnoreCase-java.lang.String-">equalsIgnoreCase</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receiver's value is equal to the other value, ignoring case.</div>
</td>
</tr>
<tr id="i107" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#except-org.eclipse.persistence.expressions.Expression-">except</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</code>
<div class="block">PUBLIC:
 Return a except expression with the subquery.</div>
</td>
</tr>
<tr id="i108" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#except-org.eclipse.persistence.queries.ReportQuery-">except</a></span>(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;query)</code>
<div class="block">PUBLIC:
 Return a except expression with the subquery.</div>
</td>
</tr>
<tr id="i109" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#exceptAll-org.eclipse.persistence.expressions.Expression-">exceptAll</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</code>
<div class="block">PUBLIC:
 Return a except all expression with the subquery.</div>
</td>
</tr>
<tr id="i110" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#exceptAll-org.eclipse.persistence.queries.ReportQuery-">exceptAll</a></span>(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;query)</code>
<div class="block">PUBLIC:
 Return a except all expression with the subquery.</div>
</td>
</tr>
<tr id="i111" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#exists-org.eclipse.persistence.queries.ReportQuery-">exists</a></span>(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;subQuery)</code>
<div class="block">PUBLIC:
 Return a sub query expression.</div>
</td>
</tr>
<tr id="i112" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#existsNode-java.lang.String-">existsNode</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;xpath)</code>
<div class="block">PUBLIC:
 XMLType Function, gets the number of nodes returned by the given xpath expression
 returns 0 if there are none</div>
</td>
</tr>
<tr id="i113" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#extract-java.lang.String-">extract</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;part)</code>
<div class="block">PUBLIC:
 Extract the date part from the date/time value.</div>
</td>
</tr>
<tr id="i114" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#extractFields-boolean-boolean-org.eclipse.persistence.descriptors.ClassDescriptor-java.util.List-java.util.Set-">extractFields</a></span>(boolean&nbsp;requireExactMatch,
             boolean&nbsp;primaryKey,
             <a href="../../../../org/eclipse/persistence/descriptors/ClassDescriptor.html" title="class in org.eclipse.persistence.descriptors">ClassDescriptor</a>&nbsp;descriptor,
             <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.eclipse.persistence.internal.helper.DatabaseField&gt;&nbsp;searchFields,
             <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.eclipse.persistence.internal.helper.DatabaseField&gt;&nbsp;foundFields)</code>
<div class="block">INTERNAL:
 Return if the expression is not a valid primary key expression and add all primary key fields to the set.</div>
</td>
</tr>
<tr id="i115" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#extractPrimaryKeyValues-boolean-org.eclipse.persistence.descriptors.ClassDescriptor-org.eclipse.persistence.internal.sessions.AbstractRecord-org.eclipse.persistence.internal.sessions.AbstractRecord-">extractPrimaryKeyValues</a></span>(boolean&nbsp;requireExactMatch,
                       <a href="../../../../org/eclipse/persistence/descriptors/ClassDescriptor.html" title="class in org.eclipse.persistence.descriptors">ClassDescriptor</a>&nbsp;descriptor,
                       org.eclipse.persistence.internal.sessions.AbstractRecord&nbsp;primaryKeyRow,
                       org.eclipse.persistence.internal.sessions.AbstractRecord&nbsp;translationRow)</code>
<div class="block">INTERNAL:
 Extract the primary key from the expression into the row.</div>
</td>
</tr>
<tr id="i116" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#extractValue-java.lang.String-">extractValue</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;xpath)</code>
<div class="block">PUBLIC:
 XMLType Function, extracts a value from an XMLType field</div>
</td>
</tr>
<tr id="i117" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#extractValues-boolean-boolean-org.eclipse.persistence.descriptors.ClassDescriptor-org.eclipse.persistence.internal.sessions.AbstractRecord-org.eclipse.persistence.internal.sessions.AbstractRecord-">extractValues</a></span>(boolean&nbsp;primaryKeyOnly,
             boolean&nbsp;requireExactMatch,
             <a href="../../../../org/eclipse/persistence/descriptors/ClassDescriptor.html" title="class in org.eclipse.persistence.descriptors">ClassDescriptor</a>&nbsp;descriptor,
             org.eclipse.persistence.internal.sessions.AbstractRecord&nbsp;primaryKeyRow,
             org.eclipse.persistence.internal.sessions.AbstractRecord&nbsp;translationRow)</code>
<div class="block">INTERNAL:
 Extract the primary key from the expression into the row.</div>
</td>
</tr>
<tr id="i118" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#extractXml-java.lang.String-">extractXml</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;xpath)</code>
<div class="block">PUBLIC:
 XMLType Function, extracts a secton of XML from a larget XML document</div>
</td>
</tr>
<tr id="i119" class="rowColor">
<td class="colFirst"><code>static <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#from-java.lang.Object-org.eclipse.persistence.expressions.Expression-">from</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value,
    <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;base)</code>
<div class="block">INTERNAL:
 Create an expression node.</div>
</td>
</tr>
<tr id="i120" class="altColor">
<td class="colFirst"><code>static <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#fromConstant-java.lang.Object-org.eclipse.persistence.expressions.Expression-">fromConstant</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value,
            <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;base)</code>
<div class="block">INTERNAL:
 Create an expression node.</div>
</td>
</tr>
<tr id="i121" class="rowColor">
<td class="colFirst"><code>static <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#fromLiteral-java.lang.String-org.eclipse.persistence.expressions.Expression-">fromLiteral</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value,
           <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;base)</code>
<div class="block">INTERNAL:
 Create an expression node.</div>
</td>
</tr>
<tr id="i122" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#get-java.lang.String-">get</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName)</code>
<div class="block">PUBLIC:
 Return an expression that wraps the attribute or query key name.</div>
</td>
</tr>
<tr id="i123" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#get-java.lang.String-boolean-">get</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName,
   boolean&nbsp;forceInnerJoin)</code>
<div class="block">PUBLIC:
 Return an expression that wraps the attribute or query key name.</div>
</td>
</tr>
<tr id="i124" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getAlias-org.eclipse.persistence.expressions.Expression-">getAlias</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;subSelect)</code>
<div class="block">ADVANCED: Return an expression representing a sub-select in the from clause.</div>
</td>
</tr>
<tr id="i125" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getAllowingNull-java.lang.String-">getAllowingNull</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName)</code>
<div class="block">ADVANCED:
 Return an expression that wraps the attribute or query key name.</div>
</td>
</tr>
<tr id="i126" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/history/AsOfClause.html" title="class in org.eclipse.persistence.history">AsOfClause</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getAsOfClause--">getAsOfClause</a></span>()</code>
<div class="block">Answers the past time the expression is explicitly as of.</div>
</td>
</tr>
<tr id="i127" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/history/AsOfClause.html" title="class in org.eclipse.persistence.history">AsOfClause</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getAsOfClauseRecursively--">getAsOfClauseRecursively</a></span>()</code>
<div class="block">INTERNAL:
 For Flashback: If this expression is not already as of some timestamp
 gets the clause from the base expression.</div>
</td>
</tr>
<tr id="i128" class="altColor">
<td class="colFirst"><code>abstract <a href="../../../../org/eclipse/persistence/expressions/ExpressionBuilder.html" title="class in org.eclipse.persistence.expressions">ExpressionBuilder</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getBuilder--">getBuilder</a></span>()</code>
<div class="block">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)</div>
</td>
</tr>
<tr id="i129" class="rowColor">
<td class="colFirst"><code>org.eclipse.persistence.internal.helper.DatabaseField</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getClonedField--">getClonedField</a></span>()</code>
<div class="block">INTERNAL:
 If there are any fields associated with this expression, return them</div>
</td>
</tr>
<tr id="i130" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getField-org.eclipse.persistence.internal.helper.DatabaseField-">getField</a></span>(org.eclipse.persistence.internal.helper.DatabaseField&nbsp;field)</code>
<div class="block">ADVANCED: Return an expression representing a field in a data-level query.</div>
</td>
</tr>
<tr id="i131" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getField-java.lang.String-">getField</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fieldName)</code>
<div class="block">ADVANCED:
 Return an expression representing a field in a data-level query.</div>
</td>
</tr>
<tr id="i132" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.eclipse.persistence.internal.helper.DatabaseField&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getFields--">getFields</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i133" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getFieldValue-java.lang.Object-org.eclipse.persistence.internal.sessions.AbstractSession-">getFieldValue</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;objectValue,
             org.eclipse.persistence.internal.sessions.AbstractSession&nbsp;session)</code>
<div class="block">INTERNAL:
 Transform the object-level value into a database-level value</div>
</td>
</tr>
<tr id="i134" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getFunction-int-">getFunction</a></span>(int&nbsp;selector)</code>
<div class="block">ADVANCED:
 This can be used for accessing user defined functions.</div>
</td>
</tr>
<tr id="i135" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getFunction-int-java.util.List-">getFunction</a></span>(int&nbsp;selector,
           <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;arguments)</code>
<div class="block">ADVANCED:
 This can be used for accessing user defined functions that have arguments.</div>
</td>
</tr>
<tr id="i136" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getFunction-java.lang.String-">getFunction</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;functionName)</code>
<div class="block">ADVANCED:
 Return a user defined function accepting the argument.</div>
</td>
</tr>
<tr id="i137" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getFunction-java.lang.String-java.lang.Object-">getFunction</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;functionName,
           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;argument)</code>
<div class="block">ADVANCED:
 Return a user defined function accepting the argument.</div>
</td>
</tr>
<tr id="i138" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getFunctionWithArguments-java.lang.String-java.util.List-">getFunctionWithArguments</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;functionName,
                        <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;arguments)</code>
<div class="block">ADVANCED:
 Return a user defined function accepting all of the arguments.</div>
</td>
</tr>
<tr id="i139" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/descriptors/ClassDescriptor.html" title="class in org.eclipse.persistence.descriptors">ClassDescriptor</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getLeafDescriptor-org.eclipse.persistence.queries.DatabaseQuery-org.eclipse.persistence.descriptors.ClassDescriptor-org.eclipse.persistence.internal.sessions.AbstractSession-">getLeafDescriptor</a></span>(<a href="../../../../org/eclipse/persistence/queries/DatabaseQuery.html" title="class in org.eclipse.persistence.queries">DatabaseQuery</a>&nbsp;query,
                 <a href="../../../../org/eclipse/persistence/descriptors/ClassDescriptor.html" title="class in org.eclipse.persistence.descriptors">ClassDescriptor</a>&nbsp;rootDescriptor,
                 org.eclipse.persistence.internal.sessions.AbstractSession&nbsp;session)</code>
<div class="block">INTERNAL:
 Lookup the descriptor for this item by traversing its expression recursively.</div>
</td>
</tr>
<tr id="i140" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/mappings/DatabaseMapping.html" title="class in org.eclipse.persistence.mappings">DatabaseMapping</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getLeafMapping-org.eclipse.persistence.queries.DatabaseQuery-org.eclipse.persistence.descriptors.ClassDescriptor-org.eclipse.persistence.internal.sessions.AbstractSession-">getLeafMapping</a></span>(<a href="../../../../org/eclipse/persistence/queries/DatabaseQuery.html" title="class in org.eclipse.persistence.queries">DatabaseQuery</a>&nbsp;query,
              <a href="../../../../org/eclipse/persistence/descriptors/ClassDescriptor.html" title="class in org.eclipse.persistence.descriptors">ClassDescriptor</a>&nbsp;rootDescriptor,
              org.eclipse.persistence.internal.sessions.AbstractSession&nbsp;session)</code>
<div class="block">INTERNAL:
 Lookup the mapping for this item by traversing its expression recursively.</div>
</td>
</tr>
<tr id="i141" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getName--">getName</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i142" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getNumberVal--">getNumberVal</a></span>()</code>
<div class="block">PUBLIC:
 XMLType Function - gets a number value from an XMLType</div>
</td>
</tr>
<tr id="i143" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/ExpressionOperator.html" title="class in org.eclipse.persistence.expressions">ExpressionOperator</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getOperator--">getOperator</a></span>()</code>
<div class="block">INTERNAL:
 Most expression have operators, so this is just a convenience method.</div>
</td>
</tr>
<tr id="i144" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/ExpressionOperator.html" title="class in org.eclipse.persistence.expressions">ExpressionOperator</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getOperator-int-">getOperator</a></span>(int&nbsp;selector)</code>
<div class="block">INTERNAL:
 Create a new expression tree with the named operator.</div>
</td>
</tr>
<tr id="i145" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.eclipse.persistence.internal.helper.DatabaseTable&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getOwnedTables--">getOwnedTables</a></span>()</code>
<div class="block">INTERNAL:
 Return the tables that this node owns for purposes of table aliasing.</div>
</td>
</tr>
<tr id="i146" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getParameter-org.eclipse.persistence.internal.helper.DatabaseField-">getParameter</a></span>(org.eclipse.persistence.internal.helper.DatabaseField&nbsp;field)</code>
<div class="block">ADVANCED:
 Return an expression representing a parameter with the given name.</div>
</td>
</tr>
<tr id="i147" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getParameter-java.lang.String-">getParameter</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;parameterName)</code>
<div class="block">ADVANCED:
 Return an expression representing a parameter with the given name.</div>
</td>
</tr>
<tr id="i148" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getParameter-java.lang.String-java.lang.Object-">getParameter</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;parameterName,
            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;type)</code>
<div class="block">INTERNAL:
 Return an expression representing a parameter with the given name and type</div>
</td>
</tr>
<tr id="i149" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getProperty-org.eclipse.persistence.internal.helper.DatabaseField-">getProperty</a></span>(org.eclipse.persistence.internal.helper.DatabaseField&nbsp;field)</code>
<div class="block">ADVANCED:
 Return an expression representing a property with the given name.</div>
</td>
</tr>
<tr id="i150" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.eclipse.persistence.internal.helper.DatabaseField&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getSelectionFields--">getSelectionFields</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i151" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.eclipse.persistence.internal.helper.DatabaseField&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getSelectionFields-org.eclipse.persistence.queries.ReadQuery-">getSelectionFields</a></span>(<a href="../../../../org/eclipse/persistence/queries/ReadQuery.html" title="class in org.eclipse.persistence.queries">ReadQuery</a>&nbsp;query)</code>&nbsp;</td>
</tr>
<tr id="i152" class="altColor">
<td class="colFirst"><code>org.eclipse.persistence.internal.sessions.AbstractSession</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getSession--">getSession</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i153" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getStringVal--">getStringVal</a></span>()</code>
<div class="block">PUBLIC:
 XMLType Function - gets a string value from an XMLType</div>
</td>
</tr>
<tr id="i154" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getTable-org.eclipse.persistence.internal.helper.DatabaseTable-">getTable</a></span>(org.eclipse.persistence.internal.helper.DatabaseTable&nbsp;table)</code>
<div class="block">ADVANCED: Return an expression representing a table in a data-level query.</div>
</td>
</tr>
<tr id="i155" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getTable-java.lang.String-">getTable</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;tableName)</code>
<div class="block">ADVANCED: Return an expression representing a table in a data-level query.</div>
</td>
</tr>
<tr id="i156" class="altColor">
<td class="colFirst"><code>org.eclipse.persistence.internal.expressions.TableAliasLookup</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getTableAliases--">getTableAliases</a></span>()</code>
<div class="block">INTERNAL:
 Return the aliases used.</div>
</td>
</tr>
<tr id="i157" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThan-boolean-">greaterThan</a></span>(boolean&nbsp;theBoolean)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is equal to the other value.</div>
</td>
</tr>
<tr id="i158" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThan-byte-">greaterThan</a></span>(byte&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is equal to the other value.</div>
</td>
</tr>
<tr id="i159" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThan-char-">greaterThan</a></span>(char&nbsp;theChar)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is equal to the other value.</div>
</td>
</tr>
<tr id="i160" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThan-double-">greaterThan</a></span>(double&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is equal to the other value.</div>
</td>
</tr>
<tr id="i161" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThan-org.eclipse.persistence.expressions.Expression-">greaterThan</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theValue)</code>&nbsp;</td>
</tr>
<tr id="i162" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThan-float-">greaterThan</a></span>(float&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is equal to the other value.</div>
</td>
</tr>
<tr id="i163" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThan-int-">greaterThan</a></span>(int&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is equal to the other value.</div>
</td>
</tr>
<tr id="i164" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThan-long-">greaterThan</a></span>(long&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is equal to the other value.</div>
</td>
</tr>
<tr id="i165" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThan-java.lang.Object-">greaterThan</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receiver's value is greater than the other value.</div>
</td>
</tr>
<tr id="i166" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThan-short-">greaterThan</a></span>(short&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is equal to the other value.</div>
</td>
</tr>
<tr id="i167" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThanEqual-boolean-">greaterThanEqual</a></span>(boolean&nbsp;theBoolean)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.</div>
</td>
</tr>
<tr id="i168" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThanEqual-byte-">greaterThanEqual</a></span>(byte&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.</div>
</td>
</tr>
<tr id="i169" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThanEqual-char-">greaterThanEqual</a></span>(char&nbsp;theChar)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.</div>
</td>
</tr>
<tr id="i170" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThanEqual-double-">greaterThanEqual</a></span>(double&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.</div>
</td>
</tr>
<tr id="i171" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThanEqual-org.eclipse.persistence.expressions.Expression-">greaterThanEqual</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.</div>
</td>
</tr>
<tr id="i172" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThanEqual-float-">greaterThanEqual</a></span>(float&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.</div>
</td>
</tr>
<tr id="i173" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThanEqual-int-">greaterThanEqual</a></span>(int&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.</div>
</td>
</tr>
<tr id="i174" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThanEqual-long-">greaterThanEqual</a></span>(long&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.</div>
</td>
</tr>
<tr id="i175" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThanEqual-java.lang.Object-">greaterThanEqual</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.</div>
</td>
</tr>
<tr id="i176" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#greaterThanEqual-short-">greaterThanEqual</a></span>(short&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.</div>
</td>
</tr>
<tr id="i177" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#hasAsOfClause--">hasAsOfClause</a></span>()</code>
<div class="block">ADVANCED:
 Answers true if <code>this</code> is to be queried as of a past time.</div>
</td>
</tr>
<tr id="i178" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#hasBeenAliased--">hasBeenAliased</a></span>()</code>
<div class="block">INTERNAL:
 Answers if the database tables associated with this expression have been
 aliased.</div>
</td>
</tr>
<tr id="i179" class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#hashCode--">hashCode</a></span>()</code>
<div class="block">INTERNAL:
 Return a consistent hash-code for the expression.</div>
</td>
</tr>
<tr id="i180" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#hexToRaw--">hexToRaw</a></span>()</code>
<div class="block">PUBLIC:
 Function, returns binary array value for the hex string.</div>
</td>
</tr>
<tr id="i181" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#ifNull-java.lang.Object-">ifNull</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;nullValue)</code>
<div class="block">PUBLIC:
 Function  return a specific value if item returned from the
 query is null.</div>
</td>
</tr>
<tr id="i182" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#in-boolean:A-">in</a></span>(boolean[]&nbsp;theBooleans)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i183" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#in-byte:A-">in</a></span>(byte[]&nbsp;theBytes)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i184" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#in-char:A-">in</a></span>(char[]&nbsp;theChars)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i185" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#in-java.util.Collection-">in</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&nbsp;theObjects)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i186" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#in-double:A-">in</a></span>(double[]&nbsp;theDoubles)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i187" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#in-org.eclipse.persistence.expressions.Expression-">in</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</code>&nbsp;</td>
</tr>
<tr id="i188" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#in-float:A-">in</a></span>(float[]&nbsp;theFloats)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i189" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#in-int:A-">in</a></span>(int[]&nbsp;theInts)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i190" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#in-long:A-">in</a></span>(long[]&nbsp;theLongs)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i191" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#in-java.lang.Object:A-">in</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;theObjects)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i192" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#in-org.eclipse.persistence.queries.ReportQuery-">in</a></span>(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;subQuery)</code>&nbsp;</td>
</tr>
<tr id="i193" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#in-short:A-">in</a></span>(short[]&nbsp;theShorts)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i194" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#index--">index</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i195" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#indexOf-java.lang.Object-">indexOf</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;substring)</code>
<div class="block">PUBLIC:
 Function, returns the integer index of the substring within the source string.</div>
</td>
</tr>
<tr id="i196" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#intersect-org.eclipse.persistence.expressions.Expression-">intersect</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</code>
<div class="block">PUBLIC:
 Return a intersect expression with the subquery.</div>
</td>
</tr>
<tr id="i197" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#intersect-org.eclipse.persistence.queries.ReportQuery-">intersect</a></span>(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;query)</code>
<div class="block">PUBLIC:
 Return a intersect expression with the subquery.</div>
</td>
</tr>
<tr id="i198" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#intersectAll-org.eclipse.persistence.expressions.Expression-">intersectAll</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</code>
<div class="block">PUBLIC:
 Return a intersect all expression with the subquery.</div>
</td>
</tr>
<tr id="i199" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#intersectAll-org.eclipse.persistence.queries.ReportQuery-">intersectAll</a></span>(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;query)</code>
<div class="block">PUBLIC:
 Return a intersect all expression with the subquery.</div>
</td>
</tr>
<tr id="i200" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isClassTypeExpression--">isClassTypeExpression</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i201" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isCompoundExpression--">isCompoundExpression</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i202" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isConstantExpression--">isConstantExpression</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i203" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isDataExpression--">isDataExpression</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i204" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isEmpty-java.lang.String-">isEmpty</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName)</code>
<div class="block">PUBLIC: A logical expression for the collection <code>attributeName</code>
 being empty.</div>
</td>
</tr>
<tr id="i205" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isExpressionBuilder--">isExpressionBuilder</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i206" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isFieldExpression--">isFieldExpression</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i207" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isFragment--">isFragment</a></span>()</code>
<div class="block">PUBLIC:
 XMLType Function - evaluates to 0 if the xml is a well formed document and 1 if the document
 is a fragment</div>
</td>
</tr>
<tr id="i208" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isFunctionExpression--">isFunctionExpression</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i209" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isLiteralExpression--">isLiteralExpression</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i210" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isLogicalExpression--">isLogicalExpression</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i211" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isMapEntryExpression--">isMapEntryExpression</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i212" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isNull--">isNull</a></span>()</code>
<div class="block">PUBLIC:
 Compare to null.</div>
</td>
</tr>
<tr id="i213" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isObjectExpression--">isObjectExpression</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i214" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isParameterExpression--">isParameterExpression</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i215" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isQueryKeyExpression--">isQueryKeyExpression</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i216" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isRelationExpression--">isRelationExpression</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i217" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isSubSelectExpression--">isSubSelectExpression</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i218" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isTableExpression--">isTableExpression</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i219" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isTreatExpression--">isTreatExpression</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i220" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#isValueExpression--">isValueExpression</a></span>()</code>
<div class="block">INTERNAL:
 Subclasses implement (isParameterExpression() || isConstantExpression())</div>
</td>
</tr>
<tr id="i221" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#iterateOn-org.eclipse.persistence.internal.expressions.ExpressionIterator-">iterateOn</a></span>(org.eclipse.persistence.internal.expressions.ExpressionIterator&nbsp;iterator)</code>
<div class="block">INTERNAL:
 For iterating using an inner class</div>
</td>
</tr>
<tr id="i222" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#join-org.eclipse.persistence.expressions.Expression-org.eclipse.persistence.expressions.Expression-">join</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;target,
    <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;onClause)</code>
<div class="block">ADVANCED:
 Defines a join between the two objects based on the specified ON clause.</div>
</td>
</tr>
<tr id="i223" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lastDay--">lastDay</a></span>()</code>
<div class="block">PUBLIC:
 Function, returns the date with the last date in the months of this source date.</div>
</td>
</tr>
<tr id="i224" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#leftJoin-org.eclipse.persistence.expressions.Expression-org.eclipse.persistence.expressions.Expression-">leftJoin</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;target,
        <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;onClause)</code>
<div class="block">ADVANCED:
 Defines an outer join between the two objects based on the specified ON clause.</div>
</td>
</tr>
<tr id="i225" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#leftPad-int-java.lang.Object-">leftPad</a></span>(int&nbsp;size,
       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;substring)</code>
<div class="block">PUBLIC:
 Function, returns the string padded with the substring to the size.</div>
</td>
</tr>
<tr id="i226" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#leftPad-java.lang.Object-java.lang.Object-">leftPad</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;size,
       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;substring)</code>
<div class="block">PUBLIC:
 Function, returns the string padded with the substring to the size.</div>
</td>
</tr>
<tr id="i227" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#leftTrim--">leftTrim</a></span>()</code>
<div class="block">PUBLIC:
 Function, returns the string left trimmed for white space.</div>
</td>
</tr>
<tr id="i228" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#leftTrim-java.lang.Object-">leftTrim</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;substring)</code>
<div class="block">PUBLIC:
 Function, returns the string with the substring trimed from the left.</div>
</td>
</tr>
<tr id="i229" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#length--">length</a></span>()</code>
<div class="block">PUBLIC:
 Function, returns the size of the string.</div>
</td>
</tr>
<tr id="i230" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThan-boolean-">lessThan</a></span>(boolean&nbsp;theBoolean)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than the other value.</div>
</td>
</tr>
<tr id="i231" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThan-byte-">lessThan</a></span>(byte&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than the other value.</div>
</td>
</tr>
<tr id="i232" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThan-char-">lessThan</a></span>(char&nbsp;theChar)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than the other value.</div>
</td>
</tr>
<tr id="i233" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThan-double-">lessThan</a></span>(double&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than the other value.</div>
</td>
</tr>
<tr id="i234" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThan-org.eclipse.persistence.expressions.Expression-">lessThan</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theValue)</code>&nbsp;</td>
</tr>
<tr id="i235" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThan-float-">lessThan</a></span>(float&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than the other value.</div>
</td>
</tr>
<tr id="i236" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThan-int-">lessThan</a></span>(int&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than the other value.</div>
</td>
</tr>
<tr id="i237" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThan-long-">lessThan</a></span>(long&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than the other value.</div>
</td>
</tr>
<tr id="i238" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThan-java.lang.Object-">lessThan</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than the other value.</div>
</td>
</tr>
<tr id="i239" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThan-short-">lessThan</a></span>(short&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than the other value.</div>
</td>
</tr>
<tr id="i240" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThanEqual-boolean-">lessThanEqual</a></span>(boolean&nbsp;theBoolean)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than and equal to the other value.</div>
</td>
</tr>
<tr id="i241" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThanEqual-byte-">lessThanEqual</a></span>(byte&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than and equal to the other value.</div>
</td>
</tr>
<tr id="i242" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThanEqual-char-">lessThanEqual</a></span>(char&nbsp;theChar)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than and equal to the other value.</div>
</td>
</tr>
<tr id="i243" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThanEqual-double-">lessThanEqual</a></span>(double&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than and equal to the other value.</div>
</td>
</tr>
<tr id="i244" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThanEqual-org.eclipse.persistence.expressions.Expression-">lessThanEqual</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than and equal to the other value.</div>
</td>
</tr>
<tr id="i245" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThanEqual-float-">lessThanEqual</a></span>(float&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than and equal to the other value.</div>
</td>
</tr>
<tr id="i246" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThanEqual-int-">lessThanEqual</a></span>(int&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than and equal to the other value.</div>
</td>
</tr>
<tr id="i247" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThanEqual-long-">lessThanEqual</a></span>(long&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than and equal to the other value.</div>
</td>
</tr>
<tr id="i248" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThanEqual-java.lang.Object-">lessThanEqual</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than and equal to the other value.</div>
</td>
</tr>
<tr id="i249" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#lessThanEqual-short-">lessThanEqual</a></span>(short&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than and equal to the other value.</div>
</td>
</tr>
<tr id="i250" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#like-org.eclipse.persistence.expressions.Expression-">like</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;argument)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is like other value.</div>
</td>
</tr>
<tr id="i251" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#like-org.eclipse.persistence.expressions.Expression-org.eclipse.persistence.expressions.Expression-">like</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;value,
    <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;escapeSequence)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is like other value.</div>
</td>
</tr>
<tr id="i252" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#like-java.lang.String-">like</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is like other value.</div>
</td>
</tr>
<tr id="i253" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#like-java.lang.String-java.lang.String-">like</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value,
    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;escapeSequence)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is like other value.</div>
</td>
</tr>
<tr id="i254" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#likeIgnoreCase-org.eclipse.persistence.expressions.Expression-">likeIgnoreCase</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is like the other value, ignoring case.</div>
</td>
</tr>
<tr id="i255" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#likeIgnoreCase-java.lang.String-">likeIgnoreCase</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is like the other value, ignoring case.</div>
</td>
</tr>
<tr id="i256" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#literal-java.lang.String-">literal</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;literal)</code>
<div class="block">ADVANCED:
 Return an expression on the literal.</div>
</td>
</tr>
<tr id="i257" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#locate-java.lang.Object-">locate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;str)</code>
<div class="block">PUBLIC:
 Function, returns the position of <code>str</code> in <code>this</code></div>
</td>
</tr>
<tr id="i258" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#locate-java.lang.Object-java.lang.Object-">locate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;str,
      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;fromIndex)</code>
<div class="block">PUBLIC:
 Function, returns the position of <code>str</code> in <code>this</code>,
 starting the search at <code>fromIndex</code>.</div>
</td>
</tr>
<tr id="i259" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#locate-java.lang.String-int-">locate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;str,
      int&nbsp;fromIndex)</code>
<div class="block">PUBLIC:
 Function, returns the position of <code>str</code> in <code>this</code>,
 starting the search at <code>fromIndex</code>.</div>
</td>
</tr>
<tr id="i260" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#mapEntry--">mapEntry</a></span>()</code>
<div class="block">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()</div>
</td>
</tr>
<tr id="i261" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#mapKey--">mapKey</a></span>()</code>
<div class="block">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()</div>
</td>
</tr>
<tr id="i262" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#maximum--">maximum</a></span>()</code>
<div class="block">PUBLIC:
 This represents the aggregate function Maximum.</div>
</td>
</tr>
<tr id="i263" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#minimum--">minimum</a></span>()</code>
<div class="block">PUBLIC:
 This represents the aggregate function Minimum.</div>
</td>
</tr>
<tr id="i264" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#monthsBetween-java.lang.Object-">monthsBetween</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;otherDate)</code>
<div class="block">PUBLIC:
 Function, returns the decimal number of months between the two dates.</div>
</td>
</tr>
<tr id="i265" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#newTime-java.lang.String-java.lang.String-">newTime</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;timeZoneFrom,
       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;timeZoneTo)</code>
<div class="block">PUBLIC:
 funcation return a date converted to a new timezone.</div>
</td>
</tr>
<tr id="i266" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#nextDay-java.lang.Object-">nextDay</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;dayName)</code>
<div class="block">PUBLIC:
 Function, returns the date with the next day from the source date as the day name given.</div>
</td>
</tr>
<tr id="i267" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#noneOf-java.lang.String-org.eclipse.persistence.expressions.Expression-">noneOf</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName,
      <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;criteria)</code>
<div class="block">PUBLIC: Returns an expression equivalent to none of <code>attributeName</code>
 holding true for <code>criteria</code>.</div>
</td>
</tr>
<tr id="i268" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#normalize-org.eclipse.persistence.internal.expressions.ExpressionNormalizer-">normalize</a></span>(org.eclipse.persistence.internal.expressions.ExpressionNormalizer&nbsp;normalizer)</code>
<div class="block">INTERNAL:
 Normalize into a structure that is printable.</div>
</td>
</tr>
<tr id="i269" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#not--">not</a></span>()</code>
<div class="block">PUBLIC:
 Return an expression that is the boolean logical negation of the expression.</div>
</td>
</tr>
<tr id="i270" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notBetween-byte-byte-">notBetween</a></span>(byte&nbsp;leftValue,
          byte&nbsp;rightValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not between two other values.</div>
</td>
</tr>
<tr id="i271" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notBetween-char-char-">notBetween</a></span>(char&nbsp;leftChar,
          char&nbsp;rightChar)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not between two other values.</div>
</td>
</tr>
<tr id="i272" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notBetween-double-double-">notBetween</a></span>(double&nbsp;leftValue,
          double&nbsp;rightValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not between two other values.</div>
</td>
</tr>
<tr id="i273" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notBetween-org.eclipse.persistence.expressions.Expression-org.eclipse.persistence.expressions.Expression-">notBetween</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;leftExpression,
          <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;rightExpression)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not between two other values.</div>
</td>
</tr>
<tr id="i274" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notBetween-float-float-">notBetween</a></span>(float&nbsp;leftValue,
          float&nbsp;rightValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not between two other values.</div>
</td>
</tr>
<tr id="i275" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notBetween-int-int-">notBetween</a></span>(int&nbsp;leftValue,
          int&nbsp;rightValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not between two other values.</div>
</td>
</tr>
<tr id="i276" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notBetween-long-long-">notBetween</a></span>(long&nbsp;leftValue,
          long&nbsp;rightValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not between two other values.</div>
</td>
</tr>
<tr id="i277" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notBetween-java.lang.Object-java.lang.Object-">notBetween</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;leftValue,
          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;rightValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not between two other values.</div>
</td>
</tr>
<tr id="i278" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notBetween-short-short-">notBetween</a></span>(short&nbsp;leftValue,
          short&nbsp;rightValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not between two other values.</div>
</td>
</tr>
<tr id="i279" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notEmpty-java.lang.String-">notEmpty</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName)</code>
<div class="block">PUBLIC: A logical expression for the collection <code>attributeName</code>
 not being empty.</div>
</td>
</tr>
<tr id="i280" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notEqual-boolean-">notEqual</a></span>(boolean&nbsp;theBoolean)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.</div>
</td>
</tr>
<tr id="i281" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notEqual-byte-">notEqual</a></span>(byte&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.</div>
</td>
</tr>
<tr id="i282" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notEqual-char-">notEqual</a></span>(char&nbsp;theChar)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.</div>
</td>
</tr>
<tr id="i283" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notEqual-double-">notEqual</a></span>(double&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.</div>
</td>
</tr>
<tr id="i284" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notEqual-org.eclipse.persistence.expressions.Expression-">notEqual</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.</div>
</td>
</tr>
<tr id="i285" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notEqual-float-">notEqual</a></span>(float&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.</div>
</td>
</tr>
<tr id="i286" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notEqual-int-">notEqual</a></span>(int&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.</div>
</td>
</tr>
<tr id="i287" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notEqual-long-">notEqual</a></span>(long&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.</div>
</td>
</tr>
<tr id="i288" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notEqual-java.lang.Object-">notEqual</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.</div>
</td>
</tr>
<tr id="i289" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notEqual-short-">notEqual</a></span>(short&nbsp;theValue)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.</div>
</td>
</tr>
<tr id="i290" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notExists-org.eclipse.persistence.queries.ReportQuery-">notExists</a></span>(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;subQuery)</code>
<div class="block">PUBLIC:
 Return a sub query expression.</div>
</td>
</tr>
<tr id="i291" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notIn-boolean:A-">notIn</a></span>(boolean[]&nbsp;theBooleans)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i292" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notIn-byte:A-">notIn</a></span>(byte[]&nbsp;theBytes)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i293" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notIn-char:A-">notIn</a></span>(char[]&nbsp;theChars)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i294" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notIn-java.util.Collection-">notIn</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&nbsp;theObjects)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i295" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notIn-double:A-">notIn</a></span>(double[]&nbsp;theDoubles)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i296" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notIn-org.eclipse.persistence.expressions.Expression-">notIn</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</code>&nbsp;</td>
</tr>
<tr id="i297" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notIn-float:A-">notIn</a></span>(float[]&nbsp;theFloats)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i298" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notIn-int:A-">notIn</a></span>(int[]&nbsp;theInts)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i299" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notIn-long:A-">notIn</a></span>(long[]&nbsp;theLongs)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i300" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notIn-java.lang.Object:A-">notIn</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;theObjects)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i301" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notIn-org.eclipse.persistence.queries.ReportQuery-">notIn</a></span>(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;subQuery)</code>&nbsp;</td>
</tr>
<tr id="i302" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notIn-short:A-">notIn</a></span>(short[]&nbsp;theShorts)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i303" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notLike-org.eclipse.persistence.expressions.Expression-">notLike</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not like the other value.</div>
</td>
</tr>
<tr id="i304" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notLike-org.eclipse.persistence.expressions.Expression-org.eclipse.persistence.expressions.Expression-">notLike</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;value,
       <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;escapeSequence)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not like the other value.</div>
</td>
</tr>
<tr id="i305" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notLike-java.lang.String-">notLike</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;aString)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not like the other value.</div>
</td>
</tr>
<tr id="i306" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notLike-java.lang.String-java.lang.String-">notLike</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value,
       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;escapeSequence)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not like the other value.</div>
</td>
</tr>
<tr id="i307" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#notNull--">notNull</a></span>()</code>
<div class="block">PUBLIC:
 Return an expression representing a comparison to null</div>
</td>
</tr>
<tr id="i308" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#nullIf-java.lang.Object-">nullIf</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;object)</code>
<div class="block">PUBLIC:
 Function Test if arguments are equal, returning null if they are and the value of the
 first expression otherwise.</div>
</td>
</tr>
<tr id="i309" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#nullsFirst--">nullsFirst</a></span>()</code>
<div class="block">PUBLIC:
 This can only be used within an ordering expression.</div>
</td>
</tr>
<tr id="i310" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#nullsLast--">nullsLast</a></span>()</code>
<div class="block">PUBLIC:
 This can only be used within an ordering expression.</div>
</td>
</tr>
<tr id="i311" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#operator-java.lang.String-java.util.List-">operator</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
        <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;arguments)</code>
<div class="block">ADVANCED:
 This can be used for accessing user defined operators that have arguments.</div>
</td>
</tr>
<tr id="i312" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#or-org.eclipse.persistence.expressions.Expression-">or</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theExpression)</code>
<div class="block">PUBLIC:
 Return an expression that is the boolean logical combination of both expressions.</div>
</td>
</tr>
<tr id="i313" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#performOperator-org.eclipse.persistence.expressions.ExpressionOperator-java.util.List-">performOperator</a></span>(<a href="../../../../org/eclipse/persistence/expressions/ExpressionOperator.html" title="class in org.eclipse.persistence.expressions">ExpressionOperator</a>&nbsp;anOperator,
               <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;args)</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i314" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#postCopyIn-java.util.Map-">postCopyIn</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&nbsp;alreadyDone)</code>&nbsp;</td>
</tr>
<tr id="i315" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#postfixSQL-java.lang.String-">postfixSQL</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;sqlString)</code>
<div class="block">ADVANCED:
 Inserts the SQL as is directly into the expression.</div>
</td>
</tr>
<tr id="i316" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#prefixSQL-java.lang.String-">prefixSQL</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;sqlString)</code>
<div class="block">ADVANCED:
 Insert the SQL as is directly into the expression.</div>
</td>
</tr>
<tr id="i317" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#printJava-org.eclipse.persistence.internal.expressions.ExpressionJavaPrinter-">printJava</a></span>(org.eclipse.persistence.internal.expressions.ExpressionJavaPrinter&nbsp;printer)</code>
<div class="block">INTERNAL:
 Print java for project class generation</div>
</td>
</tr>
<tr id="i318" class="altColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#printSQL-org.eclipse.persistence.internal.expressions.ExpressionSQLPrinter-">printSQL</a></span>(org.eclipse.persistence.internal.expressions.ExpressionSQLPrinter&nbsp;printer)</code>
<div class="block">INTERNAL:
 Print SQL</div>
</td>
</tr>
<tr id="i319" class="rowColor">
<td class="colFirst"><code>abstract <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#rebuildOn-org.eclipse.persistence.expressions.Expression-">rebuildOn</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;newBase)</code>
<div class="block">INTERNAL:
 This expression is built on a different base than the one we want.</div>
</td>
</tr>
<tr id="i320" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#ref--">ref</a></span>()</code>
<div class="block">ADVANCED:
 For Object-relational support.</div>
</td>
</tr>
<tr id="i321" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#regexp-org.eclipse.persistence.expressions.Expression-">regexp</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;regexp)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value matches the regular expression.</div>
</td>
</tr>
<tr id="i322" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#regexp-java.lang.String-">regexp</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regexp)</code>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value matches the regular expression.</div>
</td>
</tr>
<tr id="i323" class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#registerIn-java.util.Map-">registerIn</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&nbsp;alreadyDone)</code>&nbsp;</td>
</tr>
<tr id="i324" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#replace-java.lang.Object-java.lang.Object-">replace</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;stringToReplace,
       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;stringToReplaceWith)</code>
<div class="block">PUBLIC:
 Function, returns the string with occurances of the first substring replaced with the second substring.</div>
</td>
</tr>
<tr id="i325" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#replicate-int-">replicate</a></span>(int&nbsp;constant)</code>
<div class="block">PUBLIC:
 return the result of this query repeated a given number of times.</div>
</td>
</tr>
<tr id="i326" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#replicate-java.lang.Object-">replicate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;theValue)</code>
<div class="block">PUBLIC:
 return the result of this query repeated a given number of times.</div>
</td>
</tr>
<tr id="i327" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#resetCache--">resetCache</a></span>()</code>
<div class="block">Reset cached information here so that we can be sure we're accurate.</div>
</td>
</tr>
<tr id="i328" class="altColor">
<td class="colFirst"><code>abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#resetPlaceHolderBuilder-org.eclipse.persistence.expressions.ExpressionBuilder-">resetPlaceHolderBuilder</a></span>(<a href="../../../../org/eclipse/persistence/expressions/ExpressionBuilder.html" title="class in org.eclipse.persistence.expressions">ExpressionBuilder</a>&nbsp;queryBuilder)</code>
<div class="block">INTERNAL:
 Search the tree for any expressions (like SubSelectExpressions) that have been
 built using a builder that is not attached to the query.</div>
</td>
</tr>
<tr id="i329" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#reverse--">reverse</a></span>()</code>
<div class="block">PUBLIC:
 Function return the reverse of the query result.</div>
</td>
</tr>
<tr id="i330" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#right-int-">right</a></span>(int&nbsp;characters)</code>
<div class="block">PUBLIC:
 Function return a given number of characters starting at the
 right of a string.</div>
</td>
</tr>
<tr id="i331" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#right-java.lang.Object-">right</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;characters)</code>
<div class="block">PUBLIC:
 Function return a given number of characters starting at the
 right of a string.</div>
</td>
</tr>
<tr id="i332" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#rightPad-int-java.lang.Object-">rightPad</a></span>(int&nbsp;size,
        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;substring)</code>
<div class="block">PUBLIC:
 Function, returns the string padded with the substring to the size.</div>
</td>
</tr>
<tr id="i333" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#rightPad-java.lang.Object-java.lang.Object-">rightPad</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;size,
        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;substring)</code>
<div class="block">PUBLIC:
 Function, returns the string padded with the substring to the size.</div>
</td>
</tr>
<tr id="i334" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#rightTrim--">rightTrim</a></span>()</code>
<div class="block">PUBLIC:
 Function, returns the string right trimmed for white space.</div>
</td>
</tr>
<tr id="i335" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#rightTrim-java.lang.Object-">rightTrim</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;substring)</code>
<div class="block">PUBLIC:
 Function, returns the string with the substring trimed from the right.</div>
</td>
</tr>
<tr id="i336" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#roundDate-java.lang.Object-">roundDate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;yearOrMonthOrDayRoundToken)</code>
<div class="block">PUBLIC:
 Function, returns the date rounded to the year, month or day.</div>
</td>
</tr>
<tr id="i337" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#selectIfOrderedBy--">selectIfOrderedBy</a></span>()</code>
<div class="block">PUBLIC:
 Return whether this expression should be included in the SELECT clause if it is used
 in an ORDER BY clause</div>
</td>
</tr>
<tr id="i338" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#setLocalBase-org.eclipse.persistence.expressions.Expression-">setLocalBase</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;exp)</code>
<div class="block">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.</div>
</td>
</tr>
<tr id="i339" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#setSelectIfOrderedBy-boolean-">setSelectIfOrderedBy</a></span>(boolean&nbsp;selectIfOrderedBy)</code>
<div class="block">PUBLIC:
 Set whether this expression should be included in the SELECT clause of a query
 that uses it in the ORDER BY clause.</div>
</td>
</tr>
<tr id="i340" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#shallowClone--">shallowClone</a></span>()</code>
<div class="block">INTERNAL:</div>
</td>
</tr>
<tr id="i341" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#size-java.lang.Class-">size</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&nbsp;returnType)</code>
<div class="block">PUBLIC: A logical expression for the size of collection expression.</div>
</td>
</tr>
<tr id="i342" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#size-java.lang.String-">size</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName)</code>
<div class="block">PUBLIC: A logical expression for the size of collection <code>attributeName</code>.</div>
</td>
</tr>
<tr id="i343" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#some-boolean:A-">some</a></span>(boolean[]&nbsp;theBooleans)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i344" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#some-byte:A-">some</a></span>(byte[]&nbsp;theBytes)</code>
<div class="block">PUBLIC:
 Return an expression that is used with a comparison expression.</div>
</td>
</tr>
<tr id="i345" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#some-char:A-">some</a></span>(char[]&nbsp;theChars)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i346" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#some-double:A-">some</a></span>(double[]&nbsp;theDoubles)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i347" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#some-org.eclipse.persistence.expressions.Expression-">some</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</code>&nbsp;</td>
</tr>
<tr id="i348" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#some-float:A-">some</a></span>(float[]&nbsp;theFloats)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i349" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#some-int:A-">some</a></span>(int[]&nbsp;theInts)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i350" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#some-java.util.List-">some</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;theObjects)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i351" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#some-long:A-">some</a></span>(long[]&nbsp;theLongs)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i352" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#some-java.lang.Object:A-">some</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;theObjects)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i353" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#some-org.eclipse.persistence.queries.ReportQuery-">some</a></span>(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;subQuery)</code>&nbsp;</td>
</tr>
<tr id="i354" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#some-short:A-">some</a></span>(short[]&nbsp;theShorts)</code>
<div class="block">PUBLIC:
 Return an expression that checks if the receivers value is contained in the collection.</div>
</td>
</tr>
<tr id="i355" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#sql-java.lang.String-java.util.List-">sql</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;sql,
   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;arguments)</code>
<div class="block">ADVANCED:
 Parse the SQL for parameter and return a custom function expression
 using a custom operator that will print itself as the SQL.</div>
</td>
</tr>
<tr id="i356" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#standardDeviation--">standardDeviation</a></span>()</code>
<div class="block">PUBLIC:
 This represents the aggregate function StandardDeviation.</div>
</td>
</tr>
<tr id="i357" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#subQuery-org.eclipse.persistence.queries.ReportQuery-">subQuery</a></span>(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;subQuery)</code>
<div class="block">PUBLIC:
 Return a sub query expression.</div>
</td>
</tr>
<tr id="i358" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#substring-int-">substring</a></span>(int&nbsp;startPosition)</code>
<div class="block">PUBLIC:
 Function, returns the substring from the source string.</div>
</td>
</tr>
<tr id="i359" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#substring-int-int-">substring</a></span>(int&nbsp;startPosition,
         int&nbsp;size)</code>
<div class="block">PUBLIC:
 Function, returns the substring from the source string.</div>
</td>
</tr>
<tr id="i360" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#substring-java.lang.Object-">substring</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;startPosition)</code>
<div class="block">PUBLIC:
 Function, returns the substring from the source string.</div>
</td>
</tr>
<tr id="i361" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#substring-java.lang.Object-java.lang.Object-">substring</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;startPosition,
         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;size)</code>
<div class="block">PUBLIC:
 Function, returns the substring from the source string.</div>
</td>
</tr>
<tr id="i362" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#sum--">sum</a></span>()</code>
<div class="block">PUBLIC:
 This represents the aggregate function Sum.</div>
</td>
</tr>
<tr id="i363" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#toChar--">toChar</a></span>()</code>
<div class="block">PUBLIC:
 Return an expression that represents the receiver value converted to a character string.</div>
</td>
</tr>
<tr id="i364" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#toChar-java.lang.String-">toChar</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;format)</code>
<div class="block">PUBLIC:
 Return an expression that represents the receiver value converted to a character string,
 with the database formating options (i.e.</div>
</td>
</tr>
<tr id="i365" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#toCharacter--">toCharacter</a></span>()</code>
<div class="block">PUBLIC:
 Function, returns the single character string with the ascii or character set value.</div>
</td>
</tr>
<tr id="i366" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#toDate--">toDate</a></span>()</code>
<div class="block">PUBLIC:
 Function, returns date from the string using the default format.</div>
</td>
</tr>
<tr id="i367" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#toLowerCase--">toLowerCase</a></span>()</code>
<div class="block">PUBLIC:
 Return an expression that represents the receiver value converted to lower case.</div>
</td>
</tr>
<tr id="i368" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#toNumber--">toNumber</a></span>()</code>
<div class="block">PUBLIC:
 Function, returns the number converted from the string.</div>
</td>
</tr>
<tr id="i369" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#toString--">toString</a></span>()</code>
<div class="block">PUBLIC:
 Print a debug form of the expression tree.</div>
</td>
</tr>
<tr id="i370" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#toString-java.io.BufferedWriter-int-">toString</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/BufferedWriter.html?is-external=true" title="class or interface in java.io">BufferedWriter</a>&nbsp;writer,
        int&nbsp;indent)</code>
<div class="block">INTERNAL:
 Print a debug form of the expression tree.</div>
</td>
</tr>
<tr id="i371" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#toUpperCase--">toUpperCase</a></span>()</code>
<div class="block">PUBLIC:
 Return an expression that represents the receiver value converted to upper case.</div>
</td>
</tr>
<tr id="i372" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#toUppercaseCasedWords--">toUppercaseCasedWords</a></span>()</code>
<div class="block">PUBLIC:
 Function, returns the string with the first letter of each word capitalized.</div>
</td>
</tr>
<tr id="i373" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#translate-java.lang.Object-java.lang.Object-">translate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;fromString,
         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;toString)</code>
<div class="block">PUBLIC:
 Function, returns the string with each char from the from string converted to the char in the to string.</div>
</td>
</tr>
<tr id="i374" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#treat-java.lang.Class-">treat</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&nbsp;castClass)</code>
<div class="block">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.</div>
</td>
</tr>
<tr id="i375" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#trim--">trim</a></span>()</code>
<div class="block">PUBLIC:
 Function, returns the string trimmed for white space.</div>
</td>
</tr>
<tr id="i376" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#trim-java.lang.Object-">trim</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;substring)</code>
<div class="block">PUBLIC:
 Function, returns the string right and left trimmed for the substring.</div>
</td>
</tr>
<tr id="i377" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#truncateDate-java.lang.String-">truncateDate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;datePart)</code>
<div class="block">PUBLIC:
 return the date truncated to the indicated datePart.</div>
</td>
</tr>
<tr id="i378" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#twist-org.eclipse.persistence.expressions.Expression-org.eclipse.persistence.expressions.Expression-">twist</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;expression,
     <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;newBase)</code>
<div class="block">INTERNAL:
 We are given an expression that comes from a different context than the one in which this was built,
 e.g.</div>
</td>
</tr>
<tr id="i379" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#twistedForBaseAndContext-org.eclipse.persistence.expressions.Expression-org.eclipse.persistence.expressions.Expression-org.eclipse.persistence.expressions.Expression-">twistedForBaseAndContext</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;newBase,
                        <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;context,
                        <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;oldBase)</code>
<div class="block">INTERNAL:
 Rebuild myself against the base, with the values of parameters supplied by the context
 expression.</div>
</td>
</tr>
<tr id="i380" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#type--">type</a></span>()</code>
<div class="block">PUBLIC:
 Return an expression that wraps the inheritance type field in an expression.</div>
</td>
</tr>
<tr id="i381" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#union-org.eclipse.persistence.expressions.Expression-">union</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</code>
<div class="block">PUBLIC:
 Return a union expression with the subquery.</div>
</td>
</tr>
<tr id="i382" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#union-org.eclipse.persistence.queries.ReportQuery-">union</a></span>(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;query)</code>
<div class="block">PUBLIC:
 Return a union expression with the subquery.</div>
</td>
</tr>
<tr id="i383" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#unionAll-org.eclipse.persistence.expressions.Expression-">unionAll</a></span>(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</code>
<div class="block">PUBLIC:
 Return a union all expression with the subquery.</div>
</td>
</tr>
<tr id="i384" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#unionAll-org.eclipse.persistence.queries.ReportQuery-">unionAll</a></span>(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;query)</code>
<div class="block">PUBLIC:
 Return a union all expression with the subquery.</div>
</td>
</tr>
<tr id="i385" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#validateNode--">validateNode</a></span>()</code>
<div class="block">INTERNAL:
 Do any required validation for this node.</div>
</td>
</tr>
<tr id="i386" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#value--">value</a></span>()</code>
<div class="block">PUBLIC:
 Function, this represents the value function, used in nestedtable</div>
</td>
</tr>
<tr id="i387" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#value-boolean-">value</a></span>(boolean&nbsp;constant)</code>
<div class="block">PUBLIC:
 Return an expression on the constant.</div>
</td>
</tr>
<tr id="i388" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#value-byte-">value</a></span>(byte&nbsp;constant)</code>
<div class="block">PUBLIC:
 Return an expression on the constant.</div>
</td>
</tr>
<tr id="i389" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#value-char-">value</a></span>(char&nbsp;constant)</code>
<div class="block">PUBLIC:
 Return an expression on the constant.</div>
</td>
</tr>
<tr id="i390" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#value-double-">value</a></span>(double&nbsp;constant)</code>
<div class="block">PUBLIC:
 Return an expression on the constant.</div>
</td>
</tr>
<tr id="i391" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#value-float-">value</a></span>(float&nbsp;constant)</code>
<div class="block">PUBLIC:
 Return an expression on the constant.</div>
</td>
</tr>
<tr id="i392" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#value-int-">value</a></span>(int&nbsp;constant)</code>
<div class="block">PUBLIC:
 Return an expression on the constant.</div>
</td>
</tr>
<tr id="i393" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#value-long-">value</a></span>(long&nbsp;constant)</code>
<div class="block">PUBLIC:
 Return an expression on the constant.</div>
</td>
</tr>
<tr id="i394" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#value-java.lang.Object-">value</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;constant)</code>
<div class="block">PUBLIC:
 Return an expression on the constant.</div>
</td>
</tr>
<tr id="i395" class="rowColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#value-short-">value</a></span>(short&nbsp;constant)</code>
<div class="block">PUBLIC:
 Return an expression on the constant.</div>
</td>
</tr>
<tr id="i396" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#valueFromObject-java.lang.Object-org.eclipse.persistence.internal.sessions.AbstractSession-org.eclipse.persistence.internal.sessions.AbstractRecord-int-">valueFromObject</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;object,
               org.eclipse.persistence.internal.sessions.AbstractSession&nbsp;session,
               org.eclipse.persistence.internal.sessions.AbstractRecord&nbsp;translationRow,
               int&nbsp;valueHolderPolicy)</code>
<div class="block">INTERNAL:
 Return the value for in memory comparison.</div>
</td>
</tr>
<tr id="i397" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#valueFromObject-java.lang.Object-org.eclipse.persistence.internal.sessions.AbstractSession-org.eclipse.persistence.internal.sessions.AbstractRecord-int-boolean-">valueFromObject</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;object,
               org.eclipse.persistence.internal.sessions.AbstractSession&nbsp;session,
               org.eclipse.persistence.internal.sessions.AbstractRecord&nbsp;translationRow,
               int&nbsp;valueHolderPolicy,
               boolean&nbsp;isObjectUnregistered)</code>
<div class="block">INTERNAL:
 Return the value for in memory comparison.</div>
</td>
</tr>
<tr id="i398" class="altColor">
<td class="colFirst"><code><a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#variance--">variance</a></span>()</code>
<div class="block">PUBLIC:
 Function, this represents the aggregate function Variance.</div>
</td>
</tr>
<tr id="i399" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#writeAlias-org.eclipse.persistence.internal.expressions.ExpressionSQLPrinter-org.eclipse.persistence.internal.helper.DatabaseField-org.eclipse.persistence.internal.expressions.SQLSelectStatement-">writeAlias</a></span>(org.eclipse.persistence.internal.expressions.ExpressionSQLPrinter&nbsp;printer,
          org.eclipse.persistence.internal.helper.DatabaseField&nbsp;field,
          org.eclipse.persistence.internal.expressions.SQLSelectStatement&nbsp;statement)</code>
<div class="block">INTERNAL:
 Append the field's alias to the writer.</div>
</td>
</tr>
<tr id="i400" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#writeDescriptionOn-java.io.BufferedWriter-">writeDescriptionOn</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/BufferedWriter.html?is-external=true" title="class or interface in java.io">BufferedWriter</a>&nbsp;writer)</code>
<div class="block">INTERNAL:
 Used to print a debug form of the expression tree.</div>
</td>
</tr>
<tr id="i401" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#writeField-org.eclipse.persistence.internal.expressions.ExpressionSQLPrinter-org.eclipse.persistence.internal.helper.DatabaseField-org.eclipse.persistence.internal.expressions.SQLSelectStatement-">writeField</a></span>(org.eclipse.persistence.internal.expressions.ExpressionSQLPrinter&nbsp;printer,
          org.eclipse.persistence.internal.helper.DatabaseField&nbsp;field,
          org.eclipse.persistence.internal.expressions.SQLSelectStatement&nbsp;statement)</code>
<div class="block">INTERNAL:
 Append the field name to the writer.</div>
</td>
</tr>
<tr id="i402" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#writeFields-org.eclipse.persistence.internal.expressions.ExpressionSQLPrinter-java.util.List-org.eclipse.persistence.internal.expressions.SQLSelectStatement-">writeFields</a></span>(org.eclipse.persistence.internal.expressions.ExpressionSQLPrinter&nbsp;printer,
           <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.eclipse.persistence.internal.helper.DatabaseField&gt;&nbsp;newFields,
           org.eclipse.persistence.internal.expressions.SQLSelectStatement&nbsp;statement)</code>
<div class="block">INTERNAL:
 called from SQLSelectStatement.writeFieldsFromExpression(...)</div>
</td>
</tr>
<tr id="i403" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/eclipse/persistence/expressions/Expression.html#writeSubexpressionsTo-java.io.BufferedWriter-int-">writeSubexpressionsTo</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/BufferedWriter.html?is-external=true" title="class or interface in java.io">BufferedWriter</a>&nbsp;writer,
                     int&nbsp;indent)</code>
<div class="block">INTERNAL:
 Used in SQL printing.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!--   -->
</a>
<h3>Field Detail</h3>
<a name="lastTable">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lastTable</h4>
<pre>protected transient&nbsp;org.eclipse.persistence.internal.helper.DatabaseTable lastTable</pre>
<div class="block">Temporary values for table aliasing</div>
</li>
</ul>
<a name="currentAlias">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>currentAlias</h4>
<pre>protected transient&nbsp;org.eclipse.persistence.internal.helper.DatabaseTable currentAlias</pre>
</li>
</ul>
<a name="selectIfOrderedBy">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>selectIfOrderedBy</h4>
<pre>protected&nbsp;boolean selectIfOrderedBy</pre>
</li>
</ul>
<a name="hashCode">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hashCode</h4>
<pre>protected&nbsp;int hashCode</pre>
<div class="block">PERF: Cache the hashCode.</div>
</li>
</ul>
<a name="shouldUseUpperCaseForIgnoreCase">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>shouldUseUpperCaseForIgnoreCase</h4>
<pre>public static&nbsp;boolean shouldUseUpperCaseForIgnoreCase</pre>
<div class="block">Use the upper() function for case insensitive expression operations (default).
        Seting this flag to false will use the lower() function instead.</div>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="Expression--">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>Expression</h4>
<pre>public&nbsp;Expression()</pre>
<div class="block">Base Expression Constructor.  Not generally used by Developers</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="addDate-java.lang.String-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addDate</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;addDate(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;datePart,
                          int&nbsp;numberToAdd)</pre>
<div class="block">PUBLIC:
 Function, return an expression that adds to a date based on
 the specified datePart.  This is equivalent to the Sybase DATEADD function.
 <p>Example:
 <blockquote><pre>
 EclipseLink: employee.get("date").addDate("year", 2)
 Java: NA
 SQL: DATEADD(date, 2, year)
 </pre></blockquote></div>
</li>
</ul>
<a name="addDate-java.lang.String-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addDate</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;addDate(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;datePart,
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;numberToAdd)</pre>
<div class="block">PUBLIC:
 Function, return an expression that adds to a date based on
 the specified datePart.  This is equivalent to the Sybase DATEADD function.
 <p>Example:
 <blockquote><pre>
 EclipseLink: employee.get("date").addDate("year", 2)
 Java: NA
 SQL: DATEADD(date, 2, year)
 </pre></blockquote></div>
</li>
</ul>
<a name="addMonths-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addMonths</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;addMonths(int&nbsp;months)</pre>
<div class="block">PUBLIC:
 Function, to add months to a date.</div>
</li>
</ul>
<a name="addMonths-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addMonths</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;addMonths(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;months)</pre>
<div class="block">PUBLIC:
 Function, to add months to a date.</div>
</li>
</ul>
<a name="aliasForTable-org.eclipse.persistence.internal.helper.DatabaseTable-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>aliasForTable</h4>
<pre>public&nbsp;org.eclipse.persistence.internal.helper.DatabaseTable&nbsp;aliasForTable(org.eclipse.persistence.internal.helper.DatabaseTable&nbsp;table)</pre>
<div class="block">INTERNAL:
 Find the alias for a given table</div>
</li>
</ul>
<a name="allOf-java.lang.String-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>allOf</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;allOf(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName,
                        <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;criteria)</pre>
<div class="block">PUBLIC: Returns an expression equivalent to all of <code>attributeName</code>
 holding true for <code>criteria</code>.
 <p>
 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:
 <p>
 AnyOf Example: Employees with a non '613' area code phone number.
 <blockquote><pre>
 ReadAllQuery query = new ReadAllQuery(Employee.class);
 ExpressionBuilder employee = new ExpressionBuilder();
 Expression exp = employee.anyOf("phoneNumbers").get("areaCode").notEqual("613");
 </pre></blockquote>
 <p>
 AllOf Example: Employees with all '613' area code phone numbers.
 <blockquote><pre>
 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'))
 </pre></blockquote>
 <p>
 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).
 <p>Likewise the syntax employee.allOf("phoneNumbers").get("areaCode").equal("613")
 is not supported for the <pre>equal</pre> must go inside a subQuery.
 <p>
 This method saves you from writing the sub query yourself.  The above is
 equivalent to the following expression:
 <blockquote><pre>
 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);
 </pre></blockquote>
 <p>
 Note if employee has no phone numbers allOf ~ noneOf.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>criteria</code> - must have its own builder, as it will become the
 separate selection criteria of a subQuery.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a notExists subQuery expression</dd>
</dl>
</li>
</ul>
<a name="and-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>and</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;and(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theExpression)</pre>
<div class="block">PUBLIC:
 Return an expression that is the boolean logical combination of both expressions.
 This is equivalent to the SQL "AND" operator and the Java "&amp;&amp;" operator.
 <p>Example:
 <blockquote><pre>
  EclipseLink: employee.get("firstName").equal("Bob").and(employee.get("lastName").equal("Smith"))
  Java: (employee.getFirstName().equals("Bob"))  &amp;&amp; (employee.getLastName().equals("Smith"))
  SQL: F_NAME = 'Bob' AND L_NAME = 'Smith'
 </pre></blockquote></div>
</li>
</ul>
<a name="anyOf-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>anyOf</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;anyOf(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName)</pre>
<div class="block">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.
 <p>Example:
 </p>
 <table>
 <caption>This table compares an example EclipseLink anyOf Expression to Java and SQL</caption>
 <tr>
 <th id="c1">Format</th>
 <th id="c2">Equivalent</th>
 </tr>
 <tr>
 <td headers="c1">EclipseLink</td>
 <td headers="c2">
 <pre>
 ReadAllQuery query = new ReadAllQuery(Employee.class);<br>
 ExpressionBuilder builder = new ExpressionBuilder();<br>
 Expression exp = builder.get("id").equal("14858");<br>
 exp = exp.or(builder.anyOf("managedEmployees").get("firstName").equal("Bob"));<br>
 </pre>
 </td>
 </tr>
 <tr>
 <td headers="c1">Java</td>
 <td headers="c2">No direct equivalent</td>
 </tr>
 <tr>
 <td headers="c1">SQL</td>
 <td headers="c2">SELECT DISTINCT ... WHERE (t2.MGR_ID (+) = t1.ID) AND (t2.F_NAME = 'Bob')</td>
 </tr>
 </table></div>
</li>
</ul>
<a name="anyOf-java.lang.String-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>anyOf</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;anyOf(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName,
                        boolean&nbsp;shouldJoinBeIndependent)</pre>
<div class="block">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.
 <p>Example:
 </p>
 <table>
 <caption>This table compares an example EclipseLink anyOf Expression to Java and SQL</caption>
 <tr>
 <th id="c3">Format</th>
 <th id="c4">Equivalent</th>
 </tr>
 <tr>
 <td headers="c3">EclipseLink</td>
 <td headers="c4">
 <pre>
 ReadAllQuery query = new ReadAllQuery(Employee.class);<br>
 ExpressionBuilder builder = new ExpressionBuilder();<br>
 Expression exp = builder.get("id").equal("14858");<br>
 exp = exp.or(builder.anyOf("managedEmployees").get("firstName").equal("Bob"));<br>
 </pre>
 </td>
 </tr>
 <tr>
 <td headers="c3">Java</td>
 <td headers="c4">No direct equivalent</td>
 </tr>
 <tr>
 <td headers="c3">SQL</td>
 <td headers="c4">SELECT DISTINCT ... WHERE (t2.MGR_ID (+) = t1.ID) AND (t2.F_NAME = 'Bob')</td>
 </tr>
 </table></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>shouldJoinBeIndependent</code> - indicates whether a new expression should be created.</dd>
</dl>
</li>
</ul>
<a name="anyOfAllowingNone-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>anyOfAllowingNone</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;anyOfAllowingNone(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName)</pre>
<div class="block">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.
 <p>Example:
 </p>
 <table>
 <caption>This table compares an example EclipseLink anyOfAllowingNone Expression to Java and SQL</caption>
 <tr>
 <th id="c5">Format</th>
 <th id="c6">Equivalent</th>
 </tr>
 <tr>
 <td headers="c5">EclipseLink</td>
 <td headers="c6">
 <pre>
 ReadAllQuery query = new ReadAllQuery(Employee.class);<br>
 ExpressionBuilder builder = new ExpressionBuilder();<br>
 Expression exp = builder.get("id").equal("14858");<br>
 exp = exp.or(builder.anyOfAllowingNone("managedEmployees").get("firstName").equal("Bob"));<br>
 </pre>
 </td>
 </tr>
 <tr>
 <td headers="c5">Java</td>
 <td headers="c6">No direct equivalent</td>
 </tr>
 <tr>
 <td headers="c5">SQL</td>
 <td headers="c6">SELECT DISTINCT ... WHERE (t2.MGR_ID (+) = t1.ID) AND (t2.F_NAME = 'Bob')</td>
 </tr>
 </table></div>
</li>
</ul>
<a name="anyOfAllowingNone-java.lang.String-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>anyOfAllowingNone</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;anyOfAllowingNone(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName,
                                    boolean&nbsp;shouldJoinBeIndependent)</pre>
<div class="block">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.
 <p>Example:
 </p>
 <table>
 <caption>This table compares an example EclipseLink anyOfAllowingNone Expression to Java and SQL</caption>
 <tr>
 <th id="c7">Format</th>
 <th id="c8">Equivalent</th>
 </tr>
 <tr>
 <td headers="c7">EclipseLink</td>
 <td headers="c8">
 <pre>
 ReadAllQuery query = new ReadAllQuery(Employee.class);<br>
 ExpressionBuilder builder = new ExpressionBuilder();<br>
 Expression exp = builder.get("id").equal("14858");<br>
 exp = exp.or(builder.anyOfAllowingNone("managedEmployees").get("firstName").equal("Bob"));<br>
 </pre>
 </td>
 </tr>
 <tr>
 <td headers="c7">Java</td>
 <td headers="c8">No direct equivalent</td>
 </tr>
 <tr>
 <td headers="c7">SQL</td>
 <td headers="c8">SELECT DISTINCT ... WHERE (t2.MGR_ID (+) = t1.ID) AND (t2.F_NAME = 'Bob')</td>
 </tr>
 </table></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>shouldJoinBeIndependent</code> - indicates whether a new expression should be created.</dd>
</dl>
</li>
</ul>
<a name="as-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>as</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;as(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;alias)</pre>
<div class="block">ADVANCED:
 Assign an alias to the expression in the select clause.</div>
</li>
</ul>
<a name="treat-java.lang.Class-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>treat</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;treat(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&nbsp;castClass)</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
     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"
 </pre></blockquote></div>
</li>
</ul>
<a name="ascending--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ascending</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;ascending()</pre>
<div class="block">PUBLIC:
 This can only be used within an ordering expression.
 It will order the result ascending.
 Example:
 <blockquote><pre>
  readAllQuery.addOrderBy(expBuilder.get("address").get("city").ascending())
 </pre></blockquote></div>
</li>
</ul>
<a name="nullsFirst--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nullsFirst</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;nullsFirst()</pre>
<div class="block">PUBLIC:
 This can only be used within an ordering expression.
 Null results will be ordered first.
 Example:
 <blockquote><pre>
  readAllQuery.addOrderBy(expBuilder.get("address").get("city").ascending().nullsFirst())
 </pre></blockquote></div>
</li>
</ul>
<a name="nullsLast--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nullsLast</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;nullsLast()</pre>
<div class="block">PUBLIC:
 This can only be used within an ordering expression.
 Null results will be ordered last.
 Example:
 <blockquote><pre>
  readAllQuery.addOrderBy(expBuilder.get("address").get("city").ascending().nullsLast())
 </pre></blockquote></div>
</li>
</ul>
<a name="asciiValue--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>asciiValue</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;asciiValue()</pre>
<div class="block">PUBLIC:
 Function, returns the single character strings ascii value.</div>
</li>
</ul>
<a name="asOf-org.eclipse.persistence.history.AsOfClause-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>asOf</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;asOf(<a href="../../../../org/eclipse/persistence/history/AsOfClause.html" title="class in org.eclipse.persistence.history">AsOfClause</a>&nbsp;pastTime)</pre>
<div class="block">Sets all tables represented by this expression to be queried as of a past
 time.
 <p>
 Example:
 </p>
 <pre>
  EclipseLink: employee.asOf(new AsOfClause(pastTime))
  Java: None
  SQL (Flashback): SELECT ... FROM EMPLOYEE AS OF TIMESTAMP (pastTime) t0 ...
  SQL (Generic): .. WHERE (t1.START  &lt;= pastTime) AND ((t1.END IS NULL) OR t1.END  &gt; pastTime)
 </pre>
 <p>
 Set an as of clause at the expression level to still query for current objects
 while expressing selection criteria like:
 <ul>
 <li>query objects as of one time that met some condition at another time.
 <li>query objects that changed a certain way over a certain interval (querying for change).
 </ul>
 <p>
 Simultaneously querying on two versions of the same object (one past
 one present) lets you express these advanced selection criteria.
 <p>
 Example: Querying on past attributes using parallel expressions.
 </p>
 <blockquote><pre>
   // 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));
 </pre></blockquote>
 <p>
 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.
 <p>
 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.
 <p>
 Example: Querying on object changes using parallel expressions.
 </p>
 <blockquote><pre>
   // 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")));
 </pre></blockquote>
 <p>
 Example: Querying on object changes using custom query keys
 </p><blockquote><pre>
   // 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"));
 </pre></blockquote>
 <p>
 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.
 <p>
 <b>Full Reference:</b>
 <p>
 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.
 <p>
 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:
 <ul>
 <li>employee.asOf(pastTime).anyOf("projects"): projects as of past time.
 <li>expressionBuilder.asOf(pastTime): entire expression as of past time.
 <li>employee.asOf(pastTime).anyOf("projects").asOf(null): projects as of current time.
 <li>employee.anyOf("projects").asOf(pastTime): projects only as of past time.
 </ul>
 <p>
 Watch out for x.asOf(oneTime).get("y").asOf(anotherTime).
 <ul>
 <li>emp.anyOf("phoneNumbers").asOf(yesterday) = emp.asOf(yesterday).anyOf("phoneNumbers") but:
 <li>emp.get("address").asOf(yesterday) != emp.asOf(yesterday).get("address").
 </ul>
 Whether the join is also as of yesterday depends on which table the foreign
 key field resides on.  In an anyOf the foreign key is always on the right, but
 in a get (1-1) it could be on either side.  For this
 reason employee.get("address").asOf(yesterday) is undefined as it can mean
 either 'my address as of yesterday', or 'my address, as of yesterday.'</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>pastTime</code> - A read only data object used to represent a past time.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>this</code></dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/history/AsOfClause.html" title="class in org.eclipse.persistence.history"><code>AsOfClause</code></a>, 
<a href="../../../../org/eclipse/persistence/expressions/Expression.html#hasAsOfClause--"><code>hasAsOfClause()</code></a>, 
<a href="../../../../org/eclipse/persistence/sessions/Session.html#acquireHistoricalSession-org.eclipse.persistence.history.AsOfClause-"><code>Session.acquireHistoricalSession(org.eclipse.persistence.history.AsOfClause)</code></a>, 
<a href="../../../../org/eclipse/persistence/queries/ObjectLevelReadQuery.html#setAsOfClause-org.eclipse.persistence.history.AsOfClause-"><code>ObjectLevelReadQuery.setAsOfClause(org.eclipse.persistence.history.AsOfClause)</code></a></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>OracleAS EclipseLink 10<i>g</i> (10.0.3)</dd>
</dl>
</li>
</ul>
<a name="assignAlias-java.lang.String-org.eclipse.persistence.internal.helper.DatabaseTable-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>assignAlias</h4>
<pre>protected&nbsp;void&nbsp;assignAlias(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                           org.eclipse.persistence.internal.helper.DatabaseTable&nbsp;tableOrExpression)</pre>
<div class="block">INTERNAL:
 Alias a particular table within this node</div>
</li>
</ul>
<a name="assignTableAliasesStartingAt-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>assignTableAliasesStartingAt</h4>
<pre>public&nbsp;int&nbsp;assignTableAliasesStartingAt(int&nbsp;initialValue)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="average--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>average</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;average()</pre>
<div class="block">PUBLIC:
 Function, This represents the aggregate function Average. Can be used only within Report Queries.</div>
</li>
</ul>
<a name="between-byte-byte-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>between</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;between(byte&nbsp;leftValue,
                          byte&nbsp;rightValue)</pre>
<div class="block">PUBLIC:
 Function, between two bytes</div>
</li>
</ul>
<a name="between-char-char-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>between</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;between(char&nbsp;leftChar,
                          char&nbsp;rightChar)</pre>
<div class="block">PUBLIC:
 Function, between two chars</div>
</li>
</ul>
<a name="between-double-double-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>between</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;between(double&nbsp;leftValue,
                          double&nbsp;rightValue)</pre>
<div class="block">PUBLIC:
 Function, between two doubles</div>
</li>
</ul>
<a name="between-float-float-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>between</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;between(float&nbsp;leftValue,
                          float&nbsp;rightValue)</pre>
<div class="block">PUBLIC:
 Function, between two floats</div>
</li>
</ul>
<a name="between-int-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>between</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;between(int&nbsp;leftValue,
                          int&nbsp;rightValue)</pre>
<div class="block">PUBLIC:
 Function, between two ints</div>
</li>
</ul>
<a name="between-long-long-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>between</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;between(long&nbsp;leftValue,
                          long&nbsp;rightValue)</pre>
<div class="block">PUBLIC:
 Function, between two longs</div>
</li>
</ul>
<a name="between-java.lang.Object-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>between</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;between(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;leftValue,
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;rightValue)</pre>
<div class="block">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.
 <p>
 This is equivalent to the SQL "BETWEEN AND" operator and Java "&gt;=", "&lt;=;" operators.
 <p>Example:
 <pre>
     EclipseLink: employee.get("age").between(19,50)
     Java: (employee.getAge()  &gt;= 19)  &amp;&amp; (employee.getAge()  &lt;= 50)
     SQL: AGE BETWEEN 19 AND 50
 </pre></div>
</li>
</ul>
<a name="between-org.eclipse.persistence.expressions.Expression-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>between</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;between(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;leftExpression,
                          <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;rightExpression)</pre>
</li>
</ul>
<a name="between-short-short-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>between</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;between(short&nbsp;leftValue,
                          short&nbsp;rightValue)</pre>
<div class="block">PUBLIC:
 Function, between two shorts</div>
</li>
</ul>
<a name="caseStatement-java.util.Map-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>caseStatement</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;caseStatement(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&nbsp;caseItems,
                                <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;defaultItem)</pre>
<div class="block">PUBLIC:
 Function Convert values returned by the query to values
 given in the caseItems Map.  The equivalent of
 the Oracle CASE function
 <p>Example:
 <blockquote><pre>
 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"
 </pre></blockquote></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>caseItems</code> - 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.</dd>
<dd><code>defaultItem</code> - java.lang.String  the default value that will be used if none of the keys in the
 hashtable match</dd>
</dl>
</li>
</ul>
<a name="caseStatement--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>caseStatement</h4>
<pre>public&nbsp;org.eclipse.persistence.internal.expressions.ArgumentListFunctionExpression&nbsp;caseStatement()</pre>
<div class="block">INTERNAL:
 Creates an ArgumentListFunctionExpression that is capable of creating a case statement of the form:
 <blockquote><pre>
 SQL: CASE name WHEN "Robert" THEN "Bob"
     WHEN "Susan" THEN "Sue"
  ELSE "No-Nickname"
 </pre></blockquote>

 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.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><code>ArgumentListFunctionExpression</code></dd>
</dl>
</li>
</ul>
<a name="caseConditionStatement-java.util.Map-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>caseConditionStatement</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;caseConditionStatement(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;caseConditions,
                                         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;defaultItem)</pre>
<div class="block">PUBLIC:
 Function Convert values returned by the query to values
 given in the caseConditions Map.  The equivalent of
 the SQL CASE function
 <p>Example:
 <blockquote><pre>
 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"
 </pre></blockquote></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>caseConditions</code> - 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.</dd>
<dd><code>defaultItem</code> - java.lang.Object  the default value that will be used if none of the keys in the
 Map match</dd>
</dl>
</li>
</ul>
<a name="caseConditionStatement--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>caseConditionStatement</h4>
<pre>public&nbsp;org.eclipse.persistence.internal.expressions.ArgumentListFunctionExpression&nbsp;caseConditionStatement()</pre>
<div class="block">INTERNAL:
 Creates an ArgumentListFunctionExpression that is capable of creating a case statement of the form:
 <blockquote><pre>
 SQL: CASE WHEN name = "Robert" THEN "Bob"
     WHEN name = "Susan" THEN "Sue"
  ELSE "No-Nickname"
 </pre></blockquote>

 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.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><code>ArgumentListFunctionExpression</code></dd>
</dl>
</li>
</ul>
<a name="nullIf-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nullIf</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;nullIf(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;object)</pre>
<div class="block">PUBLIC:
 Function Test if arguments are equal, returning null if they are and the value of the
 first expression otherwise.
 <p>Example:
 <blockquote><pre>
 EclipseLink: builder.get("name").nullIf( "Bobby")
 Java: NA
 SQL: NULLIF(name, "Bobby")
 </pre></blockquote></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>object</code> - java.lang.Object the value/expression that will be compared to the base expression</dd>
</dl>
</li>
</ul>
<a name="coalesce-java.util.Collection-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>coalesce</h4>
<pre>public&nbsp;org.eclipse.persistence.internal.expressions.ArgumentListFunctionExpression&nbsp;coalesce(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&nbsp;expressions)</pre>
<div class="block">PUBLIC:
 Function Return null if all arguments are null and the first non-null argument otherwise
 The equivalent of the COALESCE SQL function
 <p>Example:
 <blockquote><pre>
 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)
 </pre></blockquote></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>expressions</code> - java.util.Collection
 A Collection containing the items to check if null</dd>
</dl>
</li>
</ul>
<a name="coalesce--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>coalesce</h4>
<pre>public&nbsp;org.eclipse.persistence.internal.expressions.ArgumentListFunctionExpression&nbsp;coalesce()</pre>
</li>
</ul>
<a name="clone--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>clone</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;clone()</pre>
<div class="block">INTERNAL:
 Clone the expression maintaining clone identity in the inter-connected expression graph.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
</dl>
</li>
</ul>
<a name="cloneUsing-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cloneUsing</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;cloneUsing(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;newBase)</pre>
<div class="block">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.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/mappings/ForeignReferenceMapping.html#batchedValueFromRow-org.eclipse.persistence.internal.sessions.AbstractRecord-org.eclipse.persistence.queries.ObjectLevelReadQuery-org.eclipse.persistence.internal.identitymaps.CacheKey-"><code>ForeignReferenceMapping.batchedValueFromRow(org.eclipse.persistence.internal.sessions.AbstractRecord, org.eclipse.persistence.queries.ObjectLevelReadQuery, org.eclipse.persistence.internal.identitymaps.CacheKey)</code></a>, 
<a href="../../../../org/eclipse/persistence/expressions/Expression.html#rebuildOn-org.eclipse.persistence.expressions.Expression-"><code>rebuildOn(Expression)</code></a></dd>
</dl>
</li>
</ul>
<a name="concat-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>concat</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;concat(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;left)</pre>
<div class="block">PUBLIC:
 Function, returns the concatenation of the two string values.</div>
</li>
</ul>
<a name="containsAllKeyWords-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>containsAllKeyWords</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;containsAllKeyWords(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;spaceSeparatedKeyWords)</pre>
<div class="block">PUBLIC:
 Return an expression that performs a key word search.
 <p>Example:
 <blockquote><pre>
     EclipseLink: project.get("description").containsAllKeyWords("EclipseLink rdbms java")
 </pre></blockquote></div>
</li>
</ul>
<a name="containsAnyKeyWords-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>containsAnyKeyWords</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;containsAnyKeyWords(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;spaceSeparatedKeyWords)</pre>
<div class="block">PUBLIC:
 Return an expression that performs a key word search.
 <p>Example:
 <blockquote><pre>
     EclipseLink: project.get("description").containsAllKeyWords("EclipseLink rdbms java")
 </pre></blockquote></div>
</li>
</ul>
<a name="containsSubstring-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>containsSubstring</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;containsSubstring(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value contains the substring.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("firstName").containsSubstring("Bob")
     Java: employee.getFirstName().indexOf("Bob") != -1
     SQL: F_NAME LIKE '%BOB%'
 </pre></blockquote></div>
</li>
</ul>
<a name="containsSubstring-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>containsSubstring</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;containsSubstring(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;expression)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value contains the substring.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("firstName").containsSubstring("Bob")
     Java: employee.getFirstName().indexOf("Bob") != -1
     SQL: F_NAME LIKE '%BOB%'
 </pre></blockquote></div>
</li>
</ul>
<a name="containsSubstringIgnoringCase-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>containsSubstringIgnoringCase</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;containsSubstringIgnoringCase(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value contains the substring, ignoring case.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("firstName").containsSubstringIgnoringCase("Bob")
     Java: employee.getFirstName().toUpperCase().indexOf("BOB") != -1
     SQL: UPPER(F_NAME) LIKE '%BOB%'
 </pre></blockquote></div>
</li>
</ul>
<a name="containsSubstringIgnoringCase-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>containsSubstringIgnoringCase</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;containsSubstringIgnoringCase(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;expression)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value contains the substring, ignoring case.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("firstName").containsSubstringIgnoringCase("Bob")
     Java: employee.getFirstName().toUpperCase().indexOf("BOB") != -1
     SQL: UPPER(F_NAME) LIKE '%BOB%'
 </pre></blockquote></div>
</li>
</ul>
<a name="convertNodeToUseOuterJoin--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>convertNodeToUseOuterJoin</h4>
<pre>protected&nbsp;void&nbsp;convertNodeToUseOuterJoin()</pre>
</li>
</ul>
<a name="convertToUseOuterJoin--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>convertToUseOuterJoin</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;convertToUseOuterJoin()</pre>
<div class="block">INTERNAL:
 Modify this expression to use outer joins wherever there are
 equality operations between two field nodes.</div>
</li>
</ul>
<a name="copiedVersionFrom-java.util.Map-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>copiedVersionFrom</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;copiedVersionFrom(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&nbsp;alreadyDone)</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="count--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>count</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;count()</pre>
<div class="block">PUBLIC:
 This represents the aggregate function Average. Can be used only within Report Queries.</div>
</li>
</ul>
<a name="create-org.eclipse.persistence.expressions.Expression-java.lang.Object-org.eclipse.persistence.expressions.ExpressionOperator-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>create</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;create(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;base,
                         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;singleArgument,
                         <a href="../../../../org/eclipse/persistence/expressions/ExpressionOperator.html" title="class in org.eclipse.persistence.expressions">ExpressionOperator</a>&nbsp;anOperator)</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="createWithBaseLast-org.eclipse.persistence.expressions.Expression-java.lang.Object-org.eclipse.persistence.expressions.ExpressionOperator-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createWithBaseLast</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;createWithBaseLast(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;base,
                                     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;singleArgument,
                                     <a href="../../../../org/eclipse/persistence/expressions/ExpressionOperator.html" title="class in org.eclipse.persistence.expressions">ExpressionOperator</a>&nbsp;anOperator)</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="create-org.eclipse.persistence.expressions.Expression-java.util.List-org.eclipse.persistence.expressions.ExpressionOperator-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>create</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;create(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;base,
                         <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;arguments,
                         <a href="../../../../org/eclipse/persistence/expressions/ExpressionOperator.html" title="class in org.eclipse.persistence.expressions">ExpressionOperator</a>&nbsp;anOperator)</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="currentTimeStamp--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>currentTimeStamp</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;currentTimeStamp()</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="currentDate--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>currentDate</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;currentDate()</pre>
<div class="block">PUBLIC:
 This gives access to the current date on the database through expression.</div>
</li>
</ul>
<a name="currentDateDate--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>currentDateDate</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;currentDateDate()</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="currentTime--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>currentTime</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;currentTime()</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="dateDifference-java.lang.String-java.util.Date-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dateDifference</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;dateDifference(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;datePart,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Date.html?is-external=true" title="class or interface in java.util">Date</a>&nbsp;date)</pre>
<div class="block">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 DateDiff
 <p>Example:
 <blockquote><pre>
 EclipseLink: employee.get("date").dateDifference("year", new Date(System.currentTimeMillis()))
 Java: NA
 SQL: DATEADD(date, 2, GETDATE)
 </pre></blockquote></div>
</li>
</ul>
<a name="dateDifference-java.lang.String-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dateDifference</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;dateDifference(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;datePart,
                                 <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;comparisonExpression)</pre>
<div class="block">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 DateDiff
 <p>Example:
 <blockquote><pre>
 EclipseLink: employee.get("date").dateDifference("year", new Date(System.currentTimeMillis()))
 Java: NA
 SQL: DATEADD(date, 2, GETDATE)
 </pre></blockquote></div>
</li>
</ul>
<a name="dateName-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dateName</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;dateName(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;datePart)</pre>
<div class="block">PUBLIC:
 return a string that represents the given part of a date. The equivalent
 of the Sybase DATENAME function
 <p>Example:
 <blockquote><pre>
 EclipseLink: employee.get("date").dateName("year")
 Java: new String(date.getYear())
 SQL: DATENAME(date, year)
 </pre></blockquote></div>
</li>
</ul>
<a name="datePart-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>datePart</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;datePart(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;datePart)</pre>
<div class="block">PUBLIC:
 Function return an integer which represents the requested
 part of the date.  Equivalent of the Sybase function DATEPART
 <p>Example:
 <blockquote><pre>
 EclipseLink: employee.get("date").datePart("year")
 Java: date.getYear()
 SQL: DATEPART(date, year)
 </pre></blockquote></div>
</li>
</ul>
<a name="dateToString--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dateToString</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;dateToString()</pre>
<div class="block">PUBLIC:
 Function, returns the date converted to the string value in the default database format.</div>
</li>
</ul>
<a name="decode-java.util.Map-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decode</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;decode(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&nbsp;decodeableItems,
                         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;defaultItem)</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
 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")
 </pre></blockquote></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>decodeableItems</code> - 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.</dd>
<dd><code>defaultItem</code> - the default value that will be used if none of the keys in the
 Map match</dd>
</dl>
</li>
</ul>
<a name="descending--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>descending</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;descending()</pre>
<div class="block">PUBLIC:
 This can only be used within an ordering expression.
 It will order the result descending.
 <p>Example:
 <blockquote><pre>
 readAllQuery.addOrderBy(expBuilder.get("address").get("city").descending())
 </pre></blockquote></div>
</li>
</ul>
<a name="descriptionOfNodeType--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>descriptionOfNodeType</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;descriptionOfNodeType()</pre>
<div class="block">INTERNAL:
 Used in debug printing of this node.</div>
</li>
</ul>
<a name="difference-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>difference</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;difference(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;expression)</pre>
<div class="block">PUBLIC:
 Function return a value which indicates how much difference there is
 between two expressions.  Equivalent of the Sybase DIFFERENCE function
 <p>Example:
 <blockquote><pre>
 EclipseLink: employee.get("name").difference("Frank")
 SQL: DIFFERENCE(name, 'Frank')
 </pre></blockquote></div>
</li>
</ul>
<a name="distinct--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>distinct</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;distinct()</pre>
<div class="block">PUBLIC:
 Function, This represents the distinct option inside an aggregate function. Can be used only within Report Queries.</div>
</li>
</ul>
<a name="doesConform-java.lang.Object-org.eclipse.persistence.internal.sessions.AbstractSession-org.eclipse.persistence.internal.sessions.AbstractRecord-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doesConform</h4>
<pre>public&nbsp;boolean&nbsp;doesConform(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;object,
                           org.eclipse.persistence.internal.sessions.AbstractSession&nbsp;session,
                           org.eclipse.persistence.internal.sessions.AbstractRecord&nbsp;translationRow,
                           int&nbsp;valueHolderPolicy)
                    throws <a href="../../../../org/eclipse/persistence/exceptions/QueryException.html" title="class in org.eclipse.persistence.exceptions">QueryException</a></pre>
<div class="block">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.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/eclipse/persistence/exceptions/QueryException.html" title="class in org.eclipse.persistence.exceptions">QueryException</a></code></dd>
</dl>
</li>
</ul>
<a name="doesConform-java.lang.Object-org.eclipse.persistence.internal.sessions.AbstractSession-org.eclipse.persistence.internal.sessions.AbstractRecord-int-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doesConform</h4>
<pre>public&nbsp;boolean&nbsp;doesConform(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;object,
                           org.eclipse.persistence.internal.sessions.AbstractSession&nbsp;session,
                           org.eclipse.persistence.internal.sessions.AbstractRecord&nbsp;translationRow,
                           int&nbsp;valueHolderPolicy,
                           boolean&nbsp;objectIsUnregistered)
                    throws <a href="../../../../org/eclipse/persistence/exceptions/QueryException.html" title="class in org.eclipse.persistence.exceptions">QueryException</a></pre>
<div class="block">INTERNAL:
 New parameter added to doesConform for feature 2612601</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>objectIsUnregistered</code> - 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.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../org/eclipse/persistence/exceptions/QueryException.html" title="class in org.eclipse.persistence.exceptions">QueryException</a></code></dd>
</dl>
</li>
</ul>
<a name="equals-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
<pre>public&nbsp;boolean&nbsp;equals(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;expression)</pre>
<div class="block">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.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
</dl>
</li>
</ul>
<a name="hashCode--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hashCode</h4>
<pre>public&nbsp;int&nbsp;hashCode()</pre>
<div class="block">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.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
</dl>
</li>
</ul>
<a name="computeHashCode--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>computeHashCode</h4>
<pre>public&nbsp;int&nbsp;computeHashCode()</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="equal-byte-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equal</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;equal(byte&nbsp;theValue)</pre>
</li>
</ul>
<a name="equal-char-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equal</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;equal(char&nbsp;theChar)</pre>
</li>
</ul>
<a name="equal-double-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equal</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;equal(double&nbsp;theValue)</pre>
</li>
</ul>
<a name="equal-float-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equal</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;equal(float&nbsp;theValue)</pre>
</li>
</ul>
<a name="equal-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equal</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;equal(int&nbsp;theValue)</pre>
</li>
</ul>
<a name="equal-long-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equal</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;equal(long&nbsp;theValue)</pre>
</li>
</ul>
<a name="equal-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equal</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;equal(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;theValue)</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("firstName").equal("Bob")
     Java: employee.getFirstName().equals("Bob")
     SQL: F_NAME = 'Bob'
 </pre></blockquote></div>
</li>
</ul>
<a name="equal-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equal</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;equal(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theValue)</pre>
<div class="block">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.
 <p>Since OracleAS EclipseLink 10<i>g</i> (9.0.4) if <code>this</code> is an <code>ExpressionBuilder</code> and <code>theValue</code>
 is not used elsewhere, both will be translated to the same table.  This can
 generate SQL with one less join for most exists subqueries.
 <p>Example:
 <blockquote><pre>
     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
 </pre></blockquote></div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-java.lang.Object-"><code>equal(Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="equal-short-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equal</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;equal(short&nbsp;theValue)</pre>
</li>
</ul>
<a name="equal-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equal</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;equal(boolean&nbsp;theBoolean)</pre>
</li>
</ul>
<a name="equalOuterJoin-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equalOuterJoin</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;equalOuterJoin(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;theValue)</pre>
<div class="block">INTERNAL:
 Return an expression representing an outer join comparison</div>
</li>
</ul>
<a name="equalOuterJoin-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equalOuterJoin</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;equalOuterJoin(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theValue)</pre>
<div class="block">INTERNAL:
 Return an expression representing an outer join comparison</div>
</li>
</ul>
<a name="equalsIgnoreCase-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equalsIgnoreCase</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;equalsIgnoreCase(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;theValue)</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("firstName").equalsIgnoreCase("Bob")
     Java: employee.getFirstName().equalsIgnoreCase("Bob")
     SQL: UPPER(F_NAME) = 'BOB'
 </pre></blockquote></div>
</li>
</ul>
<a name="equalsIgnoreCase-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equalsIgnoreCase</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;equalsIgnoreCase(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theValue)</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("firstName").equalsIgnoreCase("Bob")
     Java: employee.getFirstName().equalsIgnoreCase("Bob")
     SQL: UPPER(F_NAME) = 'BOB'
 </pre></blockquote></div>
</li>
</ul>
<a name="exists-org.eclipse.persistence.queries.ReportQuery-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>exists</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;exists(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;subQuery)</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
 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);
 </pre></blockquote></div>
</li>
</ul>
<a name="extractPrimaryKeyValues-boolean-org.eclipse.persistence.descriptors.ClassDescriptor-org.eclipse.persistence.internal.sessions.AbstractRecord-org.eclipse.persistence.internal.sessions.AbstractRecord-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>extractPrimaryKeyValues</h4>
<pre>public&nbsp;boolean&nbsp;extractPrimaryKeyValues(boolean&nbsp;requireExactMatch,
                                       <a href="../../../../org/eclipse/persistence/descriptors/ClassDescriptor.html" title="class in org.eclipse.persistence.descriptors">ClassDescriptor</a>&nbsp;descriptor,
                                       org.eclipse.persistence.internal.sessions.AbstractRecord&nbsp;primaryKeyRow,
                                       org.eclipse.persistence.internal.sessions.AbstractRecord&nbsp;translationRow)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="extractValues-boolean-boolean-org.eclipse.persistence.descriptors.ClassDescriptor-org.eclipse.persistence.internal.sessions.AbstractRecord-org.eclipse.persistence.internal.sessions.AbstractRecord-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>extractValues</h4>
<pre>public&nbsp;boolean&nbsp;extractValues(boolean&nbsp;primaryKeyOnly,
                             boolean&nbsp;requireExactMatch,
                             <a href="../../../../org/eclipse/persistence/descriptors/ClassDescriptor.html" title="class in org.eclipse.persistence.descriptors">ClassDescriptor</a>&nbsp;descriptor,
                             org.eclipse.persistence.internal.sessions.AbstractRecord&nbsp;primaryKeyRow,
                             org.eclipse.persistence.internal.sessions.AbstractRecord&nbsp;translationRow)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="extractFields-boolean-boolean-org.eclipse.persistence.descriptors.ClassDescriptor-java.util.List-java.util.Set-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>extractFields</h4>
<pre>public&nbsp;boolean&nbsp;extractFields(boolean&nbsp;requireExactMatch,
                             boolean&nbsp;primaryKey,
                             <a href="../../../../org/eclipse/persistence/descriptors/ClassDescriptor.html" title="class in org.eclipse.persistence.descriptors">ClassDescriptor</a>&nbsp;descriptor,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.eclipse.persistence.internal.helper.DatabaseField&gt;&nbsp;searchFields,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;org.eclipse.persistence.internal.helper.DatabaseField&gt;&nbsp;foundFields)</pre>
<div class="block">INTERNAL:
 Return if the expression is not a valid primary key expression and add all primary key fields to the set.</div>
</li>
</ul>
<a name="from-java.lang.Object-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>from</h4>
<pre>public static&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;from(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value,
                              <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;base)</pre>
<div class="block">INTERNAL:
 Create an expression node.</div>
</li>
</ul>
<a name="fromConstant-java.lang.Object-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>fromConstant</h4>
<pre>public static&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;fromConstant(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;value,
                                      <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;base)</pre>
<div class="block">INTERNAL:
 Create an expression node.</div>
</li>
</ul>
<a name="fromLiteral-java.lang.String-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>fromLiteral</h4>
<pre>public static&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;fromLiteral(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value,
                                     <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;base)</pre>
<div class="block">INTERNAL:
 Create an expression node.</div>
</li>
</ul>
<a name="get-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>get</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;get(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName)</pre>
<div class="block">PUBLIC:
 Return an expression that wraps the attribute or query key name.
 This method is used to construct user-defined queries containing joins.
 <p>Example:
 <blockquote><pre>
  builder.get("address").get("city").equal("Ottawa");
 </pre></blockquote></div>
</li>
</ul>
<a name="get-java.lang.String-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>get</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;get(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName,
                      boolean&nbsp;forceInnerJoin)</pre>
<div class="block">PUBLIC:
 Return an expression that wraps the attribute or query key name.
 This method is used to construct user-defined queries containing joins.
 <p>Example:
 <blockquote><pre>
  builder.get("address", false).get("city").equal("Ottawa");
 </pre></blockquote></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>forceInnerJoin</code> - - allows the get to not force an inner-join (if getAllowingNull was used elsewhere).</dd>
</dl>
</li>
</ul>
<a name="getAllowingNull-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAllowingNull</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;getAllowingNull(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName)</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
  builder.getAllowingNull("address").get("city").equal("Ottawa");
 </pre></blockquote></div>
</li>
</ul>
<a name="getAsOfClause--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAsOfClause</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/history/AsOfClause.html" title="class in org.eclipse.persistence.history">AsOfClause</a>&nbsp;getAsOfClause()</pre>
<div class="block">Answers the past time the expression is explicitly as of.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>An immutable object representation of the past time.
 <code>null</code> if no clause set, <code>AsOfClause.NO_CLAUSE</code> if
 clause explicitly set to <code>null</code>.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#asOf-org.eclipse.persistence.history.AsOfClause-"><code>asOf(org.eclipse.persistence.history.AsOfClause)</code></a>, 
<a href="../../../../org/eclipse/persistence/expressions/Expression.html#hasAsOfClause--"><code>hasAsOfClause()</code></a></dd>
</dl>
</li>
</ul>
<a name="getAsOfClauseRecursively--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAsOfClauseRecursively</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/history/AsOfClause.html" title="class in org.eclipse.persistence.history">AsOfClause</a>&nbsp;getAsOfClauseRecursively()</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="getBuilder--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBuilder</h4>
<pre>public abstract&nbsp;<a href="../../../../org/eclipse/persistence/expressions/ExpressionBuilder.html" title="class in org.eclipse.persistence.expressions">ExpressionBuilder</a>&nbsp;getBuilder()</pre>
<div class="block">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)</div>
</li>
</ul>
<a name="getClonedField--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getClonedField</h4>
<pre>public&nbsp;org.eclipse.persistence.internal.helper.DatabaseField&nbsp;getClonedField()</pre>
<div class="block">INTERNAL:
 If there are any fields associated with this expression, return them</div>
</li>
</ul>
<a name="getField-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getField</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;getField(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fieldName)</pre>
<div class="block">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.
 <p> Example:
 <blockquote><pre>
  builder.getField("ADDR_ID").greaterThan(100);
  builder.getTable("PROJ_EMP").getField("TYPE").equal("S");
 </pre></blockquote></div>
</li>
</ul>
<a name="getField-org.eclipse.persistence.internal.helper.DatabaseField-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getField</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;getField(org.eclipse.persistence.internal.helper.DatabaseField&nbsp;field)</pre>
<div class="block">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.
 <p> Example:
 <blockquote><pre>
  builder.getField(aField).greaterThan(100);
 </pre></blockquote></div>
</li>
</ul>
<a name="getFields--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFields</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.eclipse.persistence.internal.helper.DatabaseField&gt;&nbsp;getFields()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="getSelectionFields--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSelectionFields</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.eclipse.persistence.internal.helper.DatabaseField&gt;&nbsp;getSelectionFields()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="getSelectionFields-org.eclipse.persistence.queries.ReadQuery-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSelectionFields</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.eclipse.persistence.internal.helper.DatabaseField&gt;&nbsp;getSelectionFields(<a href="../../../../org/eclipse/persistence/queries/ReadQuery.html" title="class in org.eclipse.persistence.queries">ReadQuery</a>&nbsp;query)</pre>
</li>
</ul>
<a name="getFieldValue-java.lang.Object-org.eclipse.persistence.internal.sessions.AbstractSession-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFieldValue</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;getFieldValue(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;objectValue,
                            org.eclipse.persistence.internal.sessions.AbstractSession&nbsp;session)</pre>
<div class="block">INTERNAL:
 Transform the object-level value into a database-level value</div>
</li>
</ul>
<a name="join-org.eclipse.persistence.expressions.Expression-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>join</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;join(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;target,
                       <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;onClause)</pre>
<div class="block">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.
 <p> Example:
 <blockquote><pre>
  Expression address = employee.getAllowingNull("address");
  employee.join(address, address.get("city").equal("Ottawa"));
  query.addNonFetchJoin(address);
 </pre></blockquote></div>
</li>
</ul>
<a name="leftJoin-org.eclipse.persistence.expressions.Expression-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>leftJoin</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;leftJoin(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;target,
                           <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;onClause)</pre>
<div class="block">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.
 <p> Example:
 <blockquote><pre>
  Expression address = employee.getAllowingNull("address");
  employee.leftJoin(address, address.get("city").equal("Ottawa"));
  query.addNonFetchJoin(address);
 </pre></blockquote></div>
</li>
</ul>
<a name="getFunction-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFunction</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;getFunction(int&nbsp;selector)</pre>
<div class="block">ADVANCED:
 This can be used for accessing user defined functions.
 The operator must be defined in ExpressionOperator to be able to reference it.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/ExpressionOperator.html" title="class in org.eclipse.persistence.expressions"><code><p> Example:
 <blockquote><pre>
  builder.get("name").getFunction(MyFunctions.FOO_BAR).greaterThan(100);
 </pre></blockquote></code></a></dd>
</dl>
</li>
</ul>
<a name="getFunction-int-java.util.List-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFunction</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;getFunction(int&nbsp;selector,
                              <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;arguments)</pre>
<div class="block">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.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/ExpressionOperator.html" title="class in org.eclipse.persistence.expressions"><code><p> Example:
 <blockquote><pre>
    List arguments = new ArrayList();
    arguments.add("blee");
  builder.get("name").getFunction(MyFunctions.FOO_BAR, arguments).greaterThan(100);
 </pre></blockquote></code></a></dd>
</dl>
</li>
</ul>
<a name="operator-java.lang.String-java.util.List-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>operator</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;operator(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                           <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;arguments)</pre>
<div class="block">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.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/ExpressionOperator.html" title="class in org.eclipse.persistence.expressions"><code><p> Example:
 <blockquote><pre>
  List arguments = new ArrayList();
  arguments.add("blee");
  builder.get("name").operator("FOO_BAR", arguments).greaterThan(100);
 </pre></blockquote></code></a></dd>
</dl>
</li>
</ul>
<a name="getFunction-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFunction</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;getFunction(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;functionName)</pre>
<div class="block">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).
 <p> Example:
 <blockquote><pre>
  builder.get("firstName").getFunction("UPPER");
 </pre></blockquote></div>
</li>
</ul>
<a name="getFunction-java.lang.String-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFunction</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;getFunction(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;functionName,
                              <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;argument)</pre>
<div class="block">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).</div>
</li>
</ul>
<a name="getFunctionWithArguments-java.lang.String-java.util.List-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getFunctionWithArguments</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;getFunctionWithArguments(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;functionName,
                                           <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;arguments)</pre>
<div class="block">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, ...).</div>
</li>
</ul>
<a name="sql-java.lang.String-java.util.List-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sql</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;sql(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;sql,
                      <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;arguments)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="type--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>type</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;type()</pre>
<div class="block">PUBLIC:
 Return an expression that wraps the inheritance type field in an expression.
 <p>Example:
 <blockquote><pre>
  builder.getClassForInheritance().equal(SmallProject.class);
  builder.anyOf("projects").getClassForInheritance().equal(builder.getParameter("projectClass"));
 </pre></blockquote></div>
</li>
</ul>
<a name="getName--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getName</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;getName()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="getOperator--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOperator</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/ExpressionOperator.html" title="class in org.eclipse.persistence.expressions">ExpressionOperator</a>&nbsp;getOperator()</pre>
<div class="block">INTERNAL:
 Most expression have operators, so this is just a convenience method.</div>
</li>
</ul>
<a name="getOperator-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOperator</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/ExpressionOperator.html" title="class in org.eclipse.persistence.expressions">ExpressionOperator</a>&nbsp;getOperator(int&nbsp;selector)</pre>
<div class="block">INTERNAL:
 Create a new expression tree with the named operator. Part of the implementation of user-level "get"</div>
</li>
</ul>
<a name="getOwnedTables--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOwnedTables</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.eclipse.persistence.internal.helper.DatabaseTable&gt;&nbsp;getOwnedTables()</pre>
<div class="block">INTERNAL:
 Return the tables that this node owns for purposes of table aliasing.</div>
</li>
</ul>
<a name="getParameter-java.lang.String-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParameter</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;getParameter(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;parameterName,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;type)</pre>
<div class="block">INTERNAL:
 Return an expression representing a parameter with the given name and type</div>
</li>
</ul>
<a name="getParameter-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParameter</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;getParameter(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;parameterName)</pre>
<div class="block">ADVANCED:
 Return an expression representing a parameter with the given name.</div>
</li>
</ul>
<a name="getParameter-org.eclipse.persistence.internal.helper.DatabaseField-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getParameter</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;getParameter(org.eclipse.persistence.internal.helper.DatabaseField&nbsp;field)</pre>
<div class="block">ADVANCED:
 Return an expression representing a parameter with the given name.</div>
</li>
</ul>
<a name="getProperty-org.eclipse.persistence.internal.helper.DatabaseField-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getProperty</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;getProperty(org.eclipse.persistence.internal.helper.DatabaseField&nbsp;field)</pre>
<div class="block">ADVANCED:
 Return an expression representing a property with the given name.</div>
</li>
</ul>
<a name="getSession--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSession</h4>
<pre>public&nbsp;org.eclipse.persistence.internal.sessions.AbstractSession&nbsp;getSession()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="getTable-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTable</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;getTable(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;tableName)</pre>
<div class="block">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.
 <p> Example:
 <blockquote><pre>
  builder.getTable("PROJ_EMP").getField("TYPE").equal("S");
 </pre></blockquote></div>
</li>
</ul>
<a name="getTable-org.eclipse.persistence.internal.helper.DatabaseTable-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTable</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;getTable(org.eclipse.persistence.internal.helper.DatabaseTable&nbsp;table)</pre>
<div class="block">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.
 <p> Example:
 <blockquote><pre>
  builder.getTable(linkTable).getField("TYPE").equal("S");
 </pre></blockquote></div>
</li>
</ul>
<a name="getAlias-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAlias</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;getAlias(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;subSelect)</pre>
<div class="block">ADVANCED: Return an expression representing a sub-select in the from clause.
 <p> Example:
 <blockquote><pre>
  builder.getAlias(builder.subQuery(reportQuery)).get("type").equal("S");
 </pre></blockquote></div>
</li>
</ul>
<a name="getTableAliases--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getTableAliases</h4>
<pre>public&nbsp;org.eclipse.persistence.internal.expressions.TableAliasLookup&nbsp;getTableAliases()</pre>
<div class="block">INTERNAL:
 Return the aliases used. By default, return null, since we don't have tables.</div>
</li>
</ul>
<a name="greaterThan-byte-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThan(byte&nbsp;theValue)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="greaterThan-char-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThan(char&nbsp;theChar)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="greaterThan-double-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThan(double&nbsp;theValue)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="greaterThan-float-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThan(float&nbsp;theValue)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="greaterThan-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThan(int&nbsp;theValue)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="greaterThan-long-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThan(long&nbsp;theValue)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="greaterThan-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThan(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receiver's value is greater than the other value.
 This is equivalent to the SQL "&gt;" operator.</div>
</li>
</ul>
<a name="greaterThan-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThan(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theValue)</pre>
</li>
</ul>
<a name="greaterThan-short-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThan(short&nbsp;theValue)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="greaterThan-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThan(boolean&nbsp;theBoolean)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="greaterThanEqual-byte-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThanEqual(byte&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.
 This is equivalent to the SQL "&gt;=" operator.</div>
</li>
</ul>
<a name="greaterThanEqual-char-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThanEqual(char&nbsp;theChar)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.
 This is equivalent to the SQL "&gt;=" operator.</div>
</li>
</ul>
<a name="greaterThanEqual-double-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThanEqual(double&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.
 This is equivalent to the SQL "&gt;=" operator.</div>
</li>
</ul>
<a name="greaterThanEqual-float-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThanEqual(float&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.
 This is equivalent to the SQL "&gt;=" operator.</div>
</li>
</ul>
<a name="greaterThanEqual-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThanEqual(int&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.
 This is equivalent to the SQL "&gt;=" operator.</div>
</li>
</ul>
<a name="greaterThanEqual-long-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThanEqual(long&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.
 This is equivalent to the SQL "&gt;=" operator.</div>
</li>
</ul>
<a name="greaterThanEqual-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThanEqual(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.
 This is equivalent to the SQL "&gt;=" operator.</div>
</li>
</ul>
<a name="greaterThanEqual-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThanEqual(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.
 This is equivalent to the SQL "&gt;=" operator.</div>
</li>
</ul>
<a name="greaterThanEqual-short-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThanEqual(short&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.
 This is equivalent to the SQL "&gt;=" operator.</div>
</li>
</ul>
<a name="greaterThanEqual-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>greaterThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;greaterThanEqual(boolean&nbsp;theBoolean)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is greater and equal to the other value.
 This is equivalent to the SQL "&gt;=" operator.</div>
</li>
</ul>
<a name="hasAsOfClause--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasAsOfClause</h4>
<pre>public&nbsp;boolean&nbsp;hasAsOfClause()</pre>
<div class="block">ADVANCED:
 Answers true if <code>this</code> is to be queried as of a past time.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>false from <code>asOf(null); hasAsOfClause()</code>.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#getAsOfClause--"><code>getAsOfClause()</code></a></dd>
</dl>
</li>
</ul>
<a name="hasBeenAliased--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hasBeenAliased</h4>
<pre>public&nbsp;boolean&nbsp;hasBeenAliased()</pre>
<div class="block">INTERNAL:
 Answers if the database tables associated with this expression have been
 aliased.  This insures the same tables are not aliased twice.</div>
</li>
</ul>
<a name="hexToRaw--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hexToRaw</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;hexToRaw()</pre>
<div class="block">PUBLIC:
 Function, returns binary array value for the hex string.</div>
</li>
</ul>
<a name="ifNull-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ifNull</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;ifNull(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;nullValue)</pre>
<div class="block">PUBLIC:
 Function  return a specific value if item returned from the
 query is null.  Equivalent of the oracle NVL function
 <p>Example:
 <blockquote><pre>
 EclipseLink: employee.get("name").ifNull("no-name")
 Java: NA
 SQL: NVL(name, 'no-name')
 </pre></blockquote></div>
</li>
</ul>
<a name="in-byte:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>in</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;in(byte[]&nbsp;theBytes)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="in-char:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>in</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;in(char[]&nbsp;theChars)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="in-double:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>in</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;in(double[]&nbsp;theDoubles)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="in-float:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>in</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;in(float[]&nbsp;theFloats)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="in-int:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>in</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;in(int[]&nbsp;theInts)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="in-long:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>in</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;in(long[]&nbsp;theLongs)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="in-java.lang.Object:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>in</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;in(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;theObjects)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="in-short:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>in</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;in(short[]&nbsp;theShorts)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="in-boolean:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>in</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;in(boolean[]&nbsp;theBooleans)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="in-java.util.Collection-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>in</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;in(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&nbsp;theObjects)</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("age").in(ages)
     Java: ages.contains(employee.getAge())
     SQL: AGE IN (55, 18, 30)
 </pre></blockquote></div>
</li>
</ul>
<a name="in-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>in</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;in(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</pre>
</li>
</ul>
<a name="in-org.eclipse.persistence.queries.ReportQuery-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>in</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;in(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;subQuery)</pre>
</li>
</ul>
<a name="index--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>index</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;index()</pre>
</li>
</ul>
<a name="indexOf-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>indexOf</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;indexOf(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;substring)</pre>
<div class="block">PUBLIC:
 Function, returns the integer index of the substring within the source string.</div>
</li>
</ul>
<a name="isClassTypeExpression--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isClassTypeExpression</h4>
<pre>public&nbsp;boolean&nbsp;isClassTypeExpression()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="isCompoundExpression--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isCompoundExpression</h4>
<pre>public&nbsp;boolean&nbsp;isCompoundExpression()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="isConstantExpression--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isConstantExpression</h4>
<pre>public&nbsp;boolean&nbsp;isConstantExpression()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="isDataExpression--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isDataExpression</h4>
<pre>public&nbsp;boolean&nbsp;isDataExpression()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="isEmpty-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isEmpty</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;isEmpty(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName)</pre>
<div class="block">PUBLIC: A logical expression for the collection <code>attributeName</code>
 being empty.
 Equivalent to <code>size(attributeName).equal(0)</code>
 <p>Example:
 <blockquote><pre>
     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)
 </pre></blockquote>
 This is a case where a fast operation in java does not translate to an
 equally fast operation in SQL, requiring a correlated subselect.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#size-java.lang.String-"><code>size(java.lang.String)</code></a></dd>
</dl>
</li>
</ul>
<a name="isExpressionBuilder--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isExpressionBuilder</h4>
<pre>public&nbsp;boolean&nbsp;isExpressionBuilder()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="isFieldExpression--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isFieldExpression</h4>
<pre>public&nbsp;boolean&nbsp;isFieldExpression()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="isFunctionExpression--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isFunctionExpression</h4>
<pre>public&nbsp;boolean&nbsp;isFunctionExpression()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="isLiteralExpression--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isLiteralExpression</h4>
<pre>public&nbsp;boolean&nbsp;isLiteralExpression()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="isLogicalExpression--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isLogicalExpression</h4>
<pre>public&nbsp;boolean&nbsp;isLogicalExpression()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="isNull--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isNull</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;isNull()</pre>
<div class="block">PUBLIC:
 Compare to null.</div>
</li>
</ul>
<a name="isObjectExpression--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isObjectExpression</h4>
<pre>public&nbsp;boolean&nbsp;isObjectExpression()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="isParameterExpression--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isParameterExpression</h4>
<pre>public&nbsp;boolean&nbsp;isParameterExpression()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="isQueryKeyExpression--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isQueryKeyExpression</h4>
<pre>public&nbsp;boolean&nbsp;isQueryKeyExpression()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="isRelationExpression--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isRelationExpression</h4>
<pre>public&nbsp;boolean&nbsp;isRelationExpression()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="isSubSelectExpression--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isSubSelectExpression</h4>
<pre>public&nbsp;boolean&nbsp;isSubSelectExpression()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="isTableExpression--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isTableExpression</h4>
<pre>public&nbsp;boolean&nbsp;isTableExpression()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="isTreatExpression--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isTreatExpression</h4>
<pre>public&nbsp;boolean&nbsp;isTreatExpression()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="isMapEntryExpression--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isMapEntryExpression</h4>
<pre>public&nbsp;boolean&nbsp;isMapEntryExpression()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="isValueExpression--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isValueExpression</h4>
<pre>public&nbsp;boolean&nbsp;isValueExpression()</pre>
<div class="block">INTERNAL:
 Subclasses implement (isParameterExpression() || isConstantExpression())</div>
</li>
</ul>
<a name="iterateOn-org.eclipse.persistence.internal.expressions.ExpressionIterator-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>iterateOn</h4>
<pre>public&nbsp;void&nbsp;iterateOn(org.eclipse.persistence.internal.expressions.ExpressionIterator&nbsp;iterator)</pre>
<div class="block">INTERNAL:
 For iterating using an inner class</div>
</li>
</ul>
<a name="lastDay--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lastDay</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lastDay()</pre>
<div class="block">PUBLIC:
 Function, returns the date with the last date in the months of this source date.</div>
</li>
</ul>
<a name="leftPad-int-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>leftPad</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;leftPad(int&nbsp;size,
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;substring)</pre>
<div class="block">PUBLIC:
 Function, returns the string padded with the substring to the size.</div>
</li>
</ul>
<a name="leftPad-java.lang.Object-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>leftPad</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;leftPad(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;size,
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;substring)</pre>
<div class="block">PUBLIC:
 Function, returns the string padded with the substring to the size.</div>
</li>
</ul>
<a name="leftTrim--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>leftTrim</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;leftTrim()</pre>
<div class="block">PUBLIC:
 Function, returns the string left trimmed for white space.</div>
</li>
</ul>
<a name="leftTrim-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>leftTrim</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;leftTrim(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;substring)</pre>
<div class="block">PUBLIC:
 Function, returns the string with the substring trimed from the left.</div>
</li>
</ul>
<a name="length--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>length</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;length()</pre>
<div class="block">PUBLIC:
 Function, returns the size of the string.</div>
</li>
</ul>
<a name="lessThan-byte-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThan(byte&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than the other value.
 This is equivalent to the SQL "&lt;" operator.</div>
</li>
</ul>
<a name="lessThan-char-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThan(char&nbsp;theChar)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than the other value.
 This is equivalent to the SQL "&lt;" operator.</div>
</li>
</ul>
<a name="lessThan-double-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThan(double&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than the other value.
 This is equivalent to the SQL "&lt;" operator.</div>
</li>
</ul>
<a name="lessThan-float-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThan(float&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than the other value.
 This is equivalent to the SQL "&lt;" operator.</div>
</li>
</ul>
<a name="lessThan-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThan(int&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than the other value.
 This is equivalent to the SQL "&lt;" operator.</div>
</li>
</ul>
<a name="lessThan-long-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThan(long&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than the other value.
 This is equivalent to the SQL "&lt;" operator.</div>
</li>
</ul>
<a name="lessThan-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThan(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than the other value.
 This is equivalent to the SQL "&lt;" operator.</div>
</li>
</ul>
<a name="lessThan-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThan(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theValue)</pre>
</li>
</ul>
<a name="lessThan-short-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThan(short&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than the other value.
 This is equivalent to the SQL "&lt;" operator.</div>
</li>
</ul>
<a name="lessThan-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThan</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThan(boolean&nbsp;theBoolean)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is less than the other value.
 This is equivalent to the SQL "&lt;" operator.</div>
</li>
</ul>
<a name="lessThanEqual-byte-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThanEqual(byte&nbsp;theValue)</pre>
<div class="block">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 "&lt;=" operator.</div>
</li>
</ul>
<a name="lessThanEqual-char-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThanEqual(char&nbsp;theChar)</pre>
<div class="block">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 "&lt;=" operator.</div>
</li>
</ul>
<a name="lessThanEqual-double-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThanEqual(double&nbsp;theValue)</pre>
<div class="block">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 "&lt;=" operator.</div>
</li>
</ul>
<a name="lessThanEqual-float-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThanEqual(float&nbsp;theValue)</pre>
<div class="block">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 "&lt;=" operator.</div>
</li>
</ul>
<a name="lessThanEqual-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThanEqual(int&nbsp;theValue)</pre>
<div class="block">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 "&lt;=" operator.</div>
</li>
</ul>
<a name="lessThanEqual-long-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThanEqual(long&nbsp;theValue)</pre>
<div class="block">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 "&lt;=" operator.</div>
</li>
</ul>
<a name="lessThanEqual-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThanEqual(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;theValue)</pre>
<div class="block">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 "&lt;=" operator.</div>
</li>
</ul>
<a name="lessThanEqual-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThanEqual(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theValue)</pre>
<div class="block">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 "&lt;=" operator.</div>
</li>
</ul>
<a name="lessThanEqual-short-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThanEqual(short&nbsp;theValue)</pre>
<div class="block">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 "&lt;=" operator.</div>
</li>
</ul>
<a name="lessThanEqual-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>lessThanEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;lessThanEqual(boolean&nbsp;theBoolean)</pre>
<div class="block">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 "&lt;=" operator.</div>
</li>
</ul>
<a name="like-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>like</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;like(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value)</pre>
<div class="block">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"
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("firstName").like("B%")
     Java: NA
     SQL: F_NAME LIKE 'B%'
 </pre></blockquote></div>
</li>
</ul>
<a name="like-java.lang.String-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>like</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;like(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value,
                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;escapeSequence)</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("firstName").like("B\_SMITH", "\")
     Java: NA
     SQL: F_NAME LIKE 'B\_SMITH ESCAPE '\''
 </pre></blockquote></div>
</li>
</ul>
<a name="like-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>like</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;like(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;argument)</pre>
<div class="block">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"
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("firstName").like("B%")
     Java: NA
     SQL: F_NAME LIKE 'B%'
 </pre></blockquote></div>
</li>
</ul>
<a name="regexp-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>regexp</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;regexp(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regexp)</pre>
<div class="block">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"
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("firstName").regexp("^B.*")
     Java: Pattern.compile("^B.*").matcher(employee.getFirstName()).matches()
     SQL: F_NAME REGEXP '^B.*'
 </pre></blockquote></div>
</li>
</ul>
<a name="regexp-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>regexp</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;regexp(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;regexp)</pre>
<div class="block">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"
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("firstName").regexp("^B.*")
     Java: Pattern.compile("^B.*").matcher(employee.getFirstName()).matches()
     SQL: F_NAME REGEXP '^B.*'
 </pre></blockquote></div>
</li>
</ul>
<a name="like-org.eclipse.persistence.expressions.Expression-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>like</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;like(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;value,
                       <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;escapeSequence)</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("firstName").like("B\_SMITH", "\")
     Java: NA
     SQL: F_NAME LIKE 'B\_SMITH ESCAPE '\''
 </pre></blockquote></div>
</li>
</ul>
<a name="likeIgnoreCase-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>likeIgnoreCase</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;likeIgnoreCase(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is like the other value, ignoring case.
 This is a case in-sensitive like.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("firstName").likeIgnoreCase("%Bob%")
     Java: none
     SQL: UPPER(F_NAME) LIKE 'BOB'
 </pre></blockquote></div>
</li>
</ul>
<a name="likeIgnoreCase-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>likeIgnoreCase</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;likeIgnoreCase(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is like the other value, ignoring case.
 This is a case in-sensitive like.</div>
</li>
</ul>
<a name="locate-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>locate</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;locate(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;str)</pre>
<div class="block">PUBLIC:
 Function, returns the position of <code>str</code> in <code>this</code>
 <p>Example:
 <blockquote><pre>
 EclipseLink: employee.get("firstName").locate("ob")
 Java: employee.getFirstName().indexOf("ob") + 1
 SQL: LOCATE('ob', t0.F_NAME)
 </pre></blockquote>
 <p>
 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.</div>
</li>
</ul>
<a name="locate-java.lang.String-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>locate</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;locate(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;str,
                         int&nbsp;fromIndex)</pre>
<div class="block">PUBLIC:
 Function, returns the position of <code>str</code> in <code>this</code>,
 starting the search at <code>fromIndex</code>.
 <p>Example:
 <blockquote><pre>
 EclipseLink: employee.get("firstName").locate("ob", 1)
 Java: employee.getFirstName().indexOf("ob", 1) + 1
 SQL: LOCATE('ob', t0.F_NAME, 1)
 </pre></blockquote>
 <p>
 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.</div>
</li>
</ul>
<a name="locate-java.lang.Object-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>locate</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;locate(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;str,
                         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;fromIndex)</pre>
<div class="block">PUBLIC:
 Function, returns the position of <code>str</code> in <code>this</code>,
 starting the search at <code>fromIndex</code>.
 <p>Example:
 <blockquote><pre>
 EclipseLink: employee.get("firstName").locate("ob", 1)
 Java: employee.getFirstName().indexOf("ob", 1) + 1
 SQL: LOCATE('ob', t0.F_NAME, 1)
 </pre></blockquote>
 <p>
 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.</div>
</li>
</ul>
<a name="maximum--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>maximum</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;maximum()</pre>
<div class="block">PUBLIC:
 This represents the aggregate function Maximum. Can be used only within Report Queries.</div>
</li>
</ul>
<a name="minimum--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>minimum</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;minimum()</pre>
<div class="block">PUBLIC:
 This represents the aggregate function Minimum. Can be used only within Report Queries.</div>
</li>
</ul>
<a name="monthsBetween-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>monthsBetween</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;monthsBetween(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;otherDate)</pre>
<div class="block">PUBLIC:
 Function, returns the decimal number of months between the two dates.</div>
</li>
</ul>
<a name="mapEntry--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>mapEntry</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;mapEntry()</pre>
<div class="block">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()</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
</dl>
</li>
</ul>
<a name="mapKey--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>mapKey</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;mapKey()</pre>
<div class="block">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()</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
</dl>
</li>
</ul>
<a name="newTime-java.lang.String-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newTime</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;newTime(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;timeZoneFrom,
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;timeZoneTo)</pre>
<div class="block">PUBLIC:
 funcation return a date converted to a new timezone. Equivalent of the Oracle NEW_TIME function
 <p>Example:
 <blockquote><pre>
 EclipseLink: employee.get("date").newTime("EST", "PST")
 Java: NA
 SQL: NEW_TIME(date, 'EST', 'PST')
 </pre></blockquote></div>
</li>
</ul>
<a name="nextDay-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nextDay</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;nextDay(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;dayName)</pre>
<div class="block">PUBLIC:
 Function, returns the date with the next day from the source date as the day name given.</div>
</li>
</ul>
<a name="noneOf-java.lang.String-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>noneOf</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;noneOf(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName,
                         <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;criteria)</pre>
<div class="block">PUBLIC: Returns an expression equivalent to none of <code>attributeName</code>
 holding true for <code>criteria</code>.
 <p>
 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:
 <p>
 AnyOf Example: Employees with a '613' area code phone number.
 <blockquote><pre>
 ReadAllQuery query = new ReadAllQuery(Employee.class);
 ExpressionBuilder employee = new ExpressionBuilder();
 Expression exp = employee.anyOf("phoneNumbers").get("areaCode").equal("613");
 </pre></blockquote>
 <p>
 NoneOf Example: Employees with no '613' area code phone numbers.
 <blockquote><pre>
 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'))
 </pre></blockquote>
 <p>
 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).
 <p>Likewise the syntax employee.noneOf("phoneNumbers").get("areaCode").equal("613")
 is not supported for the <code>equal</code> must go inside a subQuery.
 <p>
 This method saves you from writing the sub query yourself.  The above is
 equivalent to the following expression:
 <blockquote><pre>
 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);
 </pre></blockquote></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>criteria</code> - must have its own builder, as it will become the
 separate selection criteria of a subQuery.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a notExists subQuery expression</dd>
</dl>
</li>
</ul>
<a name="normalize-org.eclipse.persistence.internal.expressions.ExpressionNormalizer-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>normalize</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;normalize(org.eclipse.persistence.internal.expressions.ExpressionNormalizer&nbsp;normalizer)</pre>
<div class="block">INTERNAL:
 Normalize into a structure that is printable.
 Also compute printing information such as outer joins.</div>
</li>
</ul>
<a name="not--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>not</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;not()</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("age").equal(24).not()
     Java: (! (employee.getAge() == 24))
     SQL: NOT (AGE = 24)
 </pre></blockquote></div>
</li>
</ul>
<a name="notBetween-byte-byte-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notBetween</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notBetween(byte&nbsp;leftValue,
                             byte&nbsp;rightValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not between two other values.
 Equivalent to between negated.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#between-java.lang.Object-java.lang.Object-"><code>between(Object, Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="notBetween-char-char-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notBetween</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notBetween(char&nbsp;leftChar,
                             char&nbsp;rightChar)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not between two other values.
 Equivalent to between negated.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#between-java.lang.Object-java.lang.Object-"><code>between(Object, Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="notBetween-double-double-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notBetween</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notBetween(double&nbsp;leftValue,
                             double&nbsp;rightValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not between two other values.
 Equivalent to between negated.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#between-java.lang.Object-java.lang.Object-"><code>between(Object, Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="notBetween-float-float-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notBetween</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notBetween(float&nbsp;leftValue,
                             float&nbsp;rightValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not between two other values.
 Equivalent to between negated.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#between-java.lang.Object-java.lang.Object-"><code>between(Object, Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="notBetween-int-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notBetween</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notBetween(int&nbsp;leftValue,
                             int&nbsp;rightValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not between two other values.
 Equivalent to between negated.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#between-java.lang.Object-java.lang.Object-"><code>between(Object, Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="notBetween-long-long-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notBetween</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notBetween(long&nbsp;leftValue,
                             long&nbsp;rightValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not between two other values.
 Equivalent to between negated.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#between-java.lang.Object-java.lang.Object-"><code>between(Object, Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="notBetween-java.lang.Object-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notBetween</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notBetween(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;leftValue,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;rightValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not between two other values.
 Equivalent to between negated.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#between-java.lang.Object-java.lang.Object-"><code>between(Object, Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="notBetween-org.eclipse.persistence.expressions.Expression-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notBetween</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notBetween(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;leftExpression,
                             <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;rightExpression)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not between two other values.
 Equivalent to between negated.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#between-java.lang.Object-java.lang.Object-"><code>between(Object, Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="notBetween-short-short-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notBetween</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notBetween(short&nbsp;leftValue,
                             short&nbsp;rightValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not between two other values.
 Equivalent to between negated.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#between-java.lang.Object-java.lang.Object-"><code>between(Object, Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="notEmpty-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notEmpty</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notEmpty(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName)</pre>
<div class="block">PUBLIC: A logical expression for the collection <code>attributeName</code>
 not being empty.
 Equivalent to <code>size(attributeName).greaterThan(0)</code>
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.notEmpty("phoneNumbers")
     Java: employee.getPhoneNumbers().size()  &gt; 0
     SQL: SELECT ... FROM EMP t0 WHERE (
      (SELECT COUNT(*) FROM PHONE t1 WHERE (t0.EMP_ID = t1.EMP_ID))  &gt; 0)
 </pre></blockquote>
 This is a case where a fast operation in java does not translate to an
 equally fast operation in SQL, requiring a correlated subselect.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#size-java.lang.String-"><code>size(java.lang.String)</code></a></dd>
</dl>
</li>
</ul>
<a name="notEqual-byte-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notEqual(byte&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.
 This is equivalent to the SQL "&lt;&gt;" operator</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-java.lang.Object-"><code>equal(Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="notEqual-char-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notEqual(char&nbsp;theChar)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.
 This is equivalent to the SQL "&lt;&gt;" operator</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-java.lang.Object-"><code>equal(Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="notEqual-double-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notEqual(double&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.
 This is equivalent to the SQL "&lt;&gt;" operator</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-java.lang.Object-"><code>equal(Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="notEqual-float-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notEqual(float&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.
 This is equivalent to the SQL "&lt;&gt;" operator</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-java.lang.Object-"><code>equal(Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="notEqual-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notEqual(int&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.
 This is equivalent to the SQL "&lt;&gt;" operator</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-java.lang.Object-"><code>equal(Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="notEqual-long-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notEqual(long&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.
 This is equivalent to the SQL "&lt;&gt;" operator</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-java.lang.Object-"><code>equal(Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="notEqual-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notEqual(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.
 This is equivalent to the SQL "&lt;&gt;" operator</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-java.lang.Object-"><code>equal(Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="notEqual-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notEqual(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.
 This is equivalent to the SQL "&lt;&gt;" operator</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-java.lang.Object-"><code>equal(Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="notEqual-short-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notEqual(short&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.
 This is equivalent to the SQL "&lt;&gt;" operator</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-java.lang.Object-"><code>equal(Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="notEqual-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notEqual</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notEqual(boolean&nbsp;theBoolean)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not equal to the other value.
 This is equivalent to the SQL "&lt;&gt;" operator</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#equal-java.lang.Object-"><code>equal(Object)</code></a></dd>
</dl>
</li>
</ul>
<a name="notExists-org.eclipse.persistence.queries.ReportQuery-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notExists</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notExists(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;subQuery)</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
 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);
 </pre></blockquote></div>
</li>
</ul>
<a name="notIn-byte:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notIn</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notIn(byte[]&nbsp;theBytes)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="notIn-char:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notIn</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notIn(char[]&nbsp;theChars)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="notIn-double:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notIn</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notIn(double[]&nbsp;theDoubles)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="notIn-float:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notIn</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notIn(float[]&nbsp;theFloats)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="notIn-int:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notIn</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notIn(int[]&nbsp;theInts)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="notIn-long:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notIn</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notIn(long[]&nbsp;theLongs)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="notIn-java.lang.Object:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notIn</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notIn(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;theObjects)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="notIn-org.eclipse.persistence.queries.ReportQuery-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notIn</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notIn(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;subQuery)</pre>
</li>
</ul>
<a name="notIn-short:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notIn</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notIn(short[]&nbsp;theShorts)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="notIn-boolean:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notIn</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notIn(boolean[]&nbsp;theBooleans)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="notIn-java.util.Collection-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notIn</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notIn(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&nbsp;theObjects)</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("age").in(ages)
     Java: ages.contains(employee.getAge())
     SQL: AGE IN (55, 18, 30)
 </pre></blockquote></div>
</li>
</ul>
<a name="notIn-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notIn</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notIn(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</pre>
</li>
</ul>
<a name="notLike-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notLike</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notLike(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;aString)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not like the other value.
 Equivalent to like negated.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#like-java.lang.String-"><code>like(String)</code></a></dd>
</dl>
</li>
</ul>
<a name="notLike-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notLike</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notLike(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not like the other value.
 Equivalent to like negated.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#like-java.lang.String-"><code>like(String)</code></a></dd>
</dl>
</li>
</ul>
<a name="notLike-java.lang.String-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notLike</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notLike(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;value,
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;escapeSequence)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not like the other value.
 Equivalent to like negated.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - string to compare</dd>
<dd><code>escapeSequence</code> - the escape character to use</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#like-java.lang.String-"><code>like(String)</code></a></dd>
</dl>
</li>
</ul>
<a name="notLike-org.eclipse.persistence.expressions.Expression-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notLike</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notLike(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;value,
                          <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;escapeSequence)</pre>
<div class="block">PUBLIC:
 Return an expression that compares if the receivers value is not like the other value.
 Equivalent to like negated.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>value</code> - string to compare</dd>
<dd><code>escapeSequence</code> - the escape character to use</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#like-java.lang.String-"><code>like(String)</code></a></dd>
</dl>
</li>
</ul>
<a name="notNull--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>notNull</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;notNull()</pre>
<div class="block">PUBLIC:
 Return an expression representing a comparison to null
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("age").notNull()
     Java: employee.getAge() != null
     SQL: AGE IS NOT NULL
 </pre></blockquote></div>
</li>
</ul>
<a name="or-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>or</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;or(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;theExpression)</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
     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'
 </pre></blockquote></div>
</li>
</ul>
<a name="performOperator-org.eclipse.persistence.expressions.ExpressionOperator-java.util.List-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>performOperator</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;performOperator(<a href="../../../../org/eclipse/persistence/expressions/ExpressionOperator.html" title="class in org.eclipse.persistence.expressions">ExpressionOperator</a>&nbsp;anOperator,
                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;args)</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="postCopyIn-java.util.Map-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>postCopyIn</h4>
<pre>protected&nbsp;void&nbsp;postCopyIn(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&nbsp;alreadyDone)</pre>
</li>
</ul>
<a name="postfixSQL-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>postfixSQL</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;postfixSQL(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;sqlString)</pre>
<div class="block">ADVANCED:
 Inserts the SQL as is directly into the expression.
 The sql will be printed immediately after (postfixed to) the sql for
 <b>this</b>.
 Warning: Allowing an unverified SQL string to be passed into this
 method makes your application vulnerable to SQL injection attacks.</div>
</li>
</ul>
<a name="prefixSQL-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>prefixSQL</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;prefixSQL(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;sqlString)</pre>
<div class="block">ADVANCED:
 Insert the SQL as is directly into the expression.
 The sql will be printed immediately before (prefixed to) the sql for
 <b>this</b>.
 Warning: Allowing an unverified SQL string to be passed into this
 method makes your application vulnerable to SQL injection attacks.</div>
</li>
</ul>
<a name="printSQL-org.eclipse.persistence.internal.expressions.ExpressionSQLPrinter-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>printSQL</h4>
<pre>public abstract&nbsp;void&nbsp;printSQL(org.eclipse.persistence.internal.expressions.ExpressionSQLPrinter&nbsp;printer)</pre>
<div class="block">INTERNAL:
 Print SQL</div>
</li>
</ul>
<a name="printJava-org.eclipse.persistence.internal.expressions.ExpressionJavaPrinter-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>printJava</h4>
<pre>public&nbsp;void&nbsp;printJava(org.eclipse.persistence.internal.expressions.ExpressionJavaPrinter&nbsp;printer)</pre>
<div class="block">INTERNAL:
 Print java for project class generation</div>
</li>
</ul>
<a name="rebuildOn-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rebuildOn</h4>
<pre>public abstract&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;rebuildOn(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;newBase)</pre>
<div class="block">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.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../org/eclipse/persistence/expressions/Expression.html#cloneUsing-org.eclipse.persistence.expressions.Expression-"><code>cloneUsing(Expression newBase)</code></a></dd>
</dl>
</li>
</ul>
<a name="resetPlaceHolderBuilder-org.eclipse.persistence.expressions.ExpressionBuilder-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>resetPlaceHolderBuilder</h4>
<pre>public abstract&nbsp;void&nbsp;resetPlaceHolderBuilder(<a href="../../../../org/eclipse/persistence/expressions/ExpressionBuilder.html" title="class in org.eclipse.persistence.expressions">ExpressionBuilder</a>&nbsp;queryBuilder)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="ref--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ref</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;ref()</pre>
<div class="block">ADVANCED:
 For Object-relational support.</div>
</li>
</ul>
<a name="registerIn-java.util.Map-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>registerIn</h4>
<pre>protected&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;registerIn(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&nbsp;alreadyDone)</pre>
</li>
</ul>
<a name="replace-java.lang.Object-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>replace</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;replace(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;stringToReplace,
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;stringToReplaceWith)</pre>
<div class="block">PUBLIC:
 Function, returns the string with occurances of the first substring replaced with the second substring.</div>
</li>
</ul>
<a name="replicate-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>replicate</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;replicate(int&nbsp;constant)</pre>
<div class="block">PUBLIC:
 return the result of this query repeated a given number of times.
 Equivalent of the Sybase REPLICATE function
 <p>Example:
 <blockquote><pre>
 EclipseLink: employee.get("name").replicate(2)
 Java: NA
 SQL: REPLICATE(name, 2)
 </pre></blockquote></div>
</li>
</ul>
<a name="replicate-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>replicate</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;replicate(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;theValue)</pre>
<div class="block">PUBLIC:
 return the result of this query repeated a given number of times.
 Equivalent of the Sybase REPLICATE function
 <p>Example:
 <blockquote><pre>
 EclipseLink: employee.get("name").replicate(2)
 Java: NA
 SQL: REPLICATE(name, 2)
 </pre></blockquote></div>
</li>
</ul>
<a name="resetCache--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>resetCache</h4>
<pre>protected&nbsp;void&nbsp;resetCache()</pre>
<div class="block">Reset cached information here so that we can be sure we're accurate.</div>
</li>
</ul>
<a name="reverse--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>reverse</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;reverse()</pre>
<div class="block">PUBLIC:
 Function return the reverse of the query result. Equivalent of the
 Sybase REVERSE function
 <p>Example:
 <blockquote><pre>
 EclipseLink: employee.get("name").reverse()
 Java: NA
 SQL: REVERSE(name)
 </pre></blockquote></div>
</li>
</ul>
<a name="right-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>right</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;right(int&nbsp;characters)</pre>
<div class="block">PUBLIC:
 Function return a given number of characters starting at the
 right of a string. Equivalent to the Sybase RIGHT function
 <p>Example:
 <blockquote><pre>
 EclipseLink: employee.get("name").right(2)
 Java: NA
 SQL: RIGHT(name, 2)
 </pre></blockquote></div>
</li>
</ul>
<a name="right-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>right</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;right(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;characters)</pre>
<div class="block">PUBLIC:
 Function return a given number of characters starting at the
 right of a string. Equivalent to the Sybase RIGHT function
 <p>Example:
 <blockquote><pre>
 EclipseLink: employee.get("name").right(2)
 Java: NA
 SQL: RIGHT(name, 2)
 </pre></blockquote></div>
</li>
</ul>
<a name="rightPad-int-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rightPad</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;rightPad(int&nbsp;size,
                           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;substring)</pre>
<div class="block">PUBLIC:
 Function, returns the string padded with the substring to the size.</div>
</li>
</ul>
<a name="rightPad-java.lang.Object-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rightPad</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;rightPad(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;size,
                           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;substring)</pre>
<div class="block">PUBLIC:
 Function, returns the string padded with the substring to the size.</div>
</li>
</ul>
<a name="rightTrim--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rightTrim</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;rightTrim()</pre>
<div class="block">PUBLIC:
 Function, returns the string right trimmed for white space.</div>
</li>
</ul>
<a name="rightTrim-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rightTrim</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;rightTrim(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;substring)</pre>
<div class="block">PUBLIC:
 Function, returns the string with the substring trimed from the right.</div>
</li>
</ul>
<a name="roundDate-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>roundDate</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;roundDate(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;yearOrMonthOrDayRoundToken)</pre>
<div class="block">PUBLIC:
 Function, returns the date rounded to the year, month or day.</div>
</li>
</ul>
<a name="selectIfOrderedBy--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>selectIfOrderedBy</h4>
<pre>public&nbsp;boolean&nbsp;selectIfOrderedBy()</pre>
<div class="block">PUBLIC:
 Return whether this expression should be included in the SELECT clause if it is used
 in an ORDER BY clause</div>
</li>
</ul>
<a name="setLocalBase-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setLocalBase</h4>
<pre>public&nbsp;void&nbsp;setLocalBase(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;exp)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="setSelectIfOrderedBy-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setSelectIfOrderedBy</h4>
<pre>public&nbsp;void&nbsp;setSelectIfOrderedBy(boolean&nbsp;selectIfOrderedBy)</pre>
<div class="block">PUBLIC:
 Set whether this expression should be included in the SELECT clause of a query
 that uses it in the ORDER BY clause.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>selectIfOrderedBy</code> - </dd>
</dl>
</li>
</ul>
<a name="shallowClone--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>shallowClone</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;shallowClone()</pre>
<div class="block">INTERNAL:</div>
</li>
</ul>
<a name="size-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>size</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;size(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;attributeName)</pre>
<div class="block">PUBLIC: A logical expression for the size of collection <code>attributeName</code>.
 <p>Example:
 <blockquote><pre>
     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))
 </pre></blockquote>
 This is a case where a fast operation in java does not translate to an
 equally fast operation in SQL, requiring a correlated subselect.</div>
</li>
</ul>
<a name="size-java.lang.Class-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>size</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;size(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&nbsp;returnType)</pre>
<div class="block">PUBLIC: A logical expression for the size of collection expression.
 <p>Example:
 <blockquote><pre>
     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))
 </pre></blockquote>
 This is a case where a fast operation in java does not translate to an
 equally fast operation in SQL, requiring a correlated subselect.</div>
</li>
</ul>
<a name="standardDeviation--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>standardDeviation</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;standardDeviation()</pre>
<div class="block">PUBLIC:
 This represents the aggregate function StandardDeviation. Can be used only within Report Queries.</div>
</li>
</ul>
<a name="subQuery-org.eclipse.persistence.queries.ReportQuery-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>subQuery</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;subQuery(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;subQuery)</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
 ExpressionBuilder builder = new ExpressionBuilder();
 ReportQuery subQuery = new ReportQuery(Employee.class, new ExpressionBuilder());
 subQuery.addMaximum("salary");
 builder.get("salary").equal(builder.subQuery(subQuery));
 </pre></blockquote></div>
</li>
</ul>
<a name="substring-int-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>substring</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;substring(int&nbsp;startPosition,
                            int&nbsp;size)</pre>
<div class="block">PUBLIC:
 Function, returns the substring from the source string.
 EclipseLink: employee.get("firstName").substring(1, 2)
 Java: NA
 SQL: SUBSTR(FIRST_NAME, 1, 2)</div>
</li>
</ul>
<a name="substring-java.lang.Object-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>substring</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;substring(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;startPosition,
                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;size)</pre>
<div class="block">PUBLIC:
 Function, returns the substring from the source string.
 EclipseLink: employee.get("firstName").substring(1, 2)
 Java: NA
 SQL: SUBSTR(FIRST_NAME, 1, 2)</div>
</li>
</ul>
<a name="substring-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>substring</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;substring(int&nbsp;startPosition)</pre>
<div class="block">PUBLIC:
 Function, returns the substring from the source string.
 EclipseLink: employee.get("firstName").substring(1)
 Java: NA
 SQL: SUBSTR(FIRST_NAME, 1)</div>
</li>
</ul>
<a name="substring-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>substring</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;substring(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;startPosition)</pre>
<div class="block">PUBLIC:
 Function, returns the substring from the source string.
 EclipseLink: employee.get("firstName").substring(1)
 Java: NA
 SQL: SUBSTR(FIRST_NAME, 1)</div>
</li>
</ul>
<a name="sum--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sum</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;sum()</pre>
<div class="block">PUBLIC:
 This represents the aggregate function Sum. Can be used only within Report Queries.</div>
</li>
</ul>
<a name="toCharacter--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toCharacter</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;toCharacter()</pre>
<div class="block">PUBLIC:
 Function, returns the single character string with the ascii or character set value.</div>
</li>
</ul>
<a name="toDate--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toDate</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;toDate()</pre>
<div class="block">PUBLIC:
 Function, returns date from the string using the default format.</div>
</li>
</ul>
<a name="toChar--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toChar</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;toChar()</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("salary").toChar().equal("100000")
     Java: employee.getSalary().toString().equals("100000")
     SQL: TO_CHAR(SALARY) = '100000'
 </pre></blockquote></div>
</li>
</ul>
<a name="toChar-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toChar</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;toChar(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;format)</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("startDate").toChar("day").equal("monday")
     Java: employee.getStartDate().getDay().equals("monday")
     SQL: TO_CHAR(START_DATE, 'day') = 'monday'
 </pre></blockquote></div>
</li>
</ul>
<a name="toLowerCase--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toLowerCase</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;toLowerCase()</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("firstName").toLowerCase().equal("bob")
     Java: employee.getFirstName().toLowerCase().equals("bob")
     SQL: LOWER(F_NAME) = 'bob'
 </pre></blockquote></div>
</li>
</ul>
<a name="toNumber--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toNumber</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;toNumber()</pre>
<div class="block">PUBLIC:
 Function, returns the number converted from the string.</div>
</li>
</ul>
<a name="toString--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toString</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;toString()</pre>
<div class="block">PUBLIC:
 Print a debug form of the expression tree.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
</dl>
</li>
</ul>
<a name="toString-java.io.BufferedWriter-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toString</h4>
<pre>public&nbsp;void&nbsp;toString(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/BufferedWriter.html?is-external=true" title="class or interface in java.io">BufferedWriter</a>&nbsp;writer,
                     int&nbsp;indent)
              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">INTERNAL:
 Print a debug form of the expression tree.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="toUpperCase--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toUpperCase</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;toUpperCase()</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("firstName").toUpperCase().equal("BOB")
     Java: employee.getFirstName().toUpperCase().equals("BOB")
     SQL: UPPER(F_NAME) = 'BOB'
 </pre></blockquote></div>
</li>
</ul>
<a name="toUppercaseCasedWords--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toUppercaseCasedWords</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;toUppercaseCasedWords()</pre>
<div class="block">PUBLIC:
 Function, returns the string with the first letter of each word capitalized.</div>
</li>
</ul>
<a name="translate-java.lang.Object-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>translate</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;translate(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;fromString,
                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;toString)</pre>
<div class="block">PUBLIC:
 Function, returns the string with each char from the from string converted to the char in the to string.</div>
</li>
</ul>
<a name="trim--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>trim</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;trim()</pre>
<div class="block">PUBLIC:
 Function, returns the string trimmed for white space.</div>
</li>
</ul>
<a name="trim-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>trim</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;trim(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;substring)</pre>
<div class="block">PUBLIC:
 Function, returns the string right and left trimmed for the substring.</div>
</li>
</ul>
<a name="extractXml-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>extractXml</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;extractXml(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;xpath)</pre>
<div class="block">PUBLIC:
 XMLType Function, extracts a secton of XML from a larget XML document</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>xpath</code> - XPath expression representing the node to be returned</dd>
</dl>
</li>
</ul>
<a name="extract-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>extract</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;extract(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;part)</pre>
<div class="block">PUBLIC:
 Extract the date part from the date/time value.
 EXTRACT is part of the SQL standard, so should be supported by most databases.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>part</code> - is the date part to extract, "YEAR", "MONTH", "DAY", "HOUR", "MINUTE", "SECOND", "TIMEZONE_HOUR", "TIMEZONE_MINUTE".</dd>
</dl>
</li>
</ul>
<a name="cast-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cast</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;cast(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;type)</pre>
<div class="block">PUBLIC:
 Cast the value to the database type.
 CAST is part of the SQL standard, so should be supported by most databases.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>type</code> - 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.</dd>
</dl>
</li>
</ul>
<a name="extractValue-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>extractValue</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;extractValue(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;xpath)</pre>
<div class="block">PUBLIC:
 XMLType Function, extracts a value from an XMLType field</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>xpath</code> - XPath expression</dd>
</dl>
</li>
</ul>
<a name="existsNode-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>existsNode</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;existsNode(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;xpath)</pre>
<div class="block">PUBLIC:
 XMLType Function, gets the number of nodes returned by the given xpath expression
 returns 0 if there are none</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>xpath</code> - Xpath expression</dd>
</dl>
</li>
</ul>
<a name="isFragment--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isFragment</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;isFragment()</pre>
<div class="block">PUBLIC:
 XMLType Function - evaluates to 0 if the xml is a well formed document and 1 if the document
 is a fragment</div>
</li>
</ul>
<a name="getStringVal--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getStringVal</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;getStringVal()</pre>
<div class="block">PUBLIC:
 XMLType Function - gets a string value from an XMLType</div>
</li>
</ul>
<a name="getNumberVal--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNumberVal</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;getNumberVal()</pre>
<div class="block">PUBLIC:
 XMLType Function - gets a number value from an XMLType</div>
</li>
</ul>
<a name="truncateDate-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>truncateDate</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;truncateDate(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;datePart)</pre>
<div class="block">PUBLIC:
 return the date truncated to the indicated datePart. Equivalent
 to the Sybase TRUNC function for dates
 <p>Example:
 <blockquote><pre>
 EclipseLink: employee.get("date").truncDate(year)
 Java: NA
 SQL: TRUNC(date, year)
 </pre></blockquote></div>
</li>
</ul>
<a name="twist-org.eclipse.persistence.expressions.Expression-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>twist</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;twist(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;expression,
                        <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;newBase)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="twistedForBaseAndContext-org.eclipse.persistence.expressions.Expression-org.eclipse.persistence.expressions.Expression-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>twistedForBaseAndContext</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;twistedForBaseAndContext(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;newBase,
                                           <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;context,
                                           <a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;oldBase)</pre>
<div class="block">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"</div>
</li>
</ul>
<a name="validateNode--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateNode</h4>
<pre>public&nbsp;void&nbsp;validateNode()</pre>
<div class="block">INTERNAL:
 Do any required validation for this node. Throw an exception for any incorrect constructs.</div>
</li>
</ul>
<a name="value--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>value</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;value()</pre>
<div class="block">PUBLIC:
 Function, this represents the value function, used in nestedtable</div>
</li>
</ul>
<a name="value-byte-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>value</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;value(byte&nbsp;constant)</pre>
<div class="block">PUBLIC:
 Return an expression on the constant.
 <p>Example:
 <blockquote><pre>
 reportQuery.addItem("a constant", builder.value("a constant"));
 </pre></blockquote></div>
</li>
</ul>
<a name="value-char-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>value</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;value(char&nbsp;constant)</pre>
<div class="block">PUBLIC:
 Return an expression on the constant.
 <p>Example:
 <blockquote><pre>
 reportQuery.addItem("a constant", builder.value("a constant"));
 </pre></blockquote></div>
</li>
</ul>
<a name="value-double-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>value</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;value(double&nbsp;constant)</pre>
<div class="block">PUBLIC:
 Return an expression on the constant.
 <p>Example:
 <blockquote><pre>
 reportQuery.addItem("a constant", builder.value("a constant"));
 </pre></blockquote></div>
</li>
</ul>
<a name="value-float-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>value</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;value(float&nbsp;constant)</pre>
<div class="block">PUBLIC:
 Return an expression on the constant.
 <p>Example:
 <blockquote><pre>
 reportQuery.addItem("a constant", builder.value("a constant"));
 </pre></blockquote></div>
</li>
</ul>
<a name="value-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>value</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;value(int&nbsp;constant)</pre>
<div class="block">PUBLIC:
 Return an expression on the constant.
 <p>Example:
 <blockquote><pre>
 reportQuery.addItem("a constant", builder.value("a constant"));
 </pre></blockquote></div>
</li>
</ul>
<a name="value-long-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>value</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;value(long&nbsp;constant)</pre>
<div class="block">PUBLIC:
 Return an expression on the constant.
 <p>Example:
 <blockquote><pre>
 reportQuery.addItem("a constant", builder.value("a constant"));
 </pre></blockquote></div>
</li>
</ul>
<a name="value-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>value</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;value(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;constant)</pre>
<div class="block">PUBLIC:
 Return an expression on the constant.
 <p>Example:
 <blockquote><pre>
 reportQuery.addItem("a constant", builder.value("a constant"));
 </pre></blockquote></div>
</li>
</ul>
<a name="value-short-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>value</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;value(short&nbsp;constant)</pre>
<div class="block">PUBLIC:
 Return an expression on the constant.
 <p>Example:
 <blockquote><pre>
 reportQuery.addItem("a constant", builder.value("a constant"));
 </pre></blockquote></div>
</li>
</ul>
<a name="value-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>value</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;value(boolean&nbsp;constant)</pre>
<div class="block">PUBLIC:
 Return an expression on the constant.
 <p>Example:
 <blockquote><pre>
 reportQuery.addItem("a constant", builder.value("a constant"));
 </pre></blockquote></div>
</li>
</ul>
<a name="literal-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>literal</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;literal(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;literal)</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
 reportQuery.addItem("currentTime", builder.literal("SYSDATE"));
 </pre></blockquote></div>
</li>
</ul>
<a name="alias-java.lang.String-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>alias</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;alias(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;alias)</pre>
<div class="block">ADVANCED:
 Return an expression for the alias.
 This allows an alias used in the select clause to be used in other clauses.</div>
</li>
</ul>
<a name="valueFromObject-java.lang.Object-org.eclipse.persistence.internal.sessions.AbstractSession-org.eclipse.persistence.internal.sessions.AbstractRecord-int-boolean-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>valueFromObject</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;valueFromObject(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;object,
                              org.eclipse.persistence.internal.sessions.AbstractSession&nbsp;session,
                              org.eclipse.persistence.internal.sessions.AbstractRecord&nbsp;translationRow,
                              int&nbsp;valueHolderPolicy,
                              boolean&nbsp;isObjectUnregistered)</pre>
<div class="block">INTERNAL:
 Return the value for in memory comparison.
 This is only valid for valueable expressions.
 New parameter added for feature 2612601</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>isObjectUnregistered</code> - true if object possibly not a clone, but is being
 conformed against the unit of work cache.</dd>
</dl>
</li>
</ul>
<a name="valueFromObject-java.lang.Object-org.eclipse.persistence.internal.sessions.AbstractSession-org.eclipse.persistence.internal.sessions.AbstractRecord-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>valueFromObject</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;valueFromObject(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;object,
                              org.eclipse.persistence.internal.sessions.AbstractSession&nbsp;session,
                              org.eclipse.persistence.internal.sessions.AbstractRecord&nbsp;translationRow,
                              int&nbsp;valueHolderPolicy)</pre>
<div class="block">INTERNAL:
 Return the value for in memory comparison.
 This is only valid for valueable expressions.</div>
</li>
</ul>
<a name="variance--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>variance</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;variance()</pre>
<div class="block">PUBLIC:
 Function, this represents the aggregate function Variance. Can be used only within Report Queries.</div>
</li>
</ul>
<a name="writeDescriptionOn-java.io.BufferedWriter-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>writeDescriptionOn</h4>
<pre>public&nbsp;void&nbsp;writeDescriptionOn(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/BufferedWriter.html?is-external=true" title="class or interface in java.io">BufferedWriter</a>&nbsp;writer)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">INTERNAL:
 Used to print a debug form of the expression tree.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="writeField-org.eclipse.persistence.internal.expressions.ExpressionSQLPrinter-org.eclipse.persistence.internal.helper.DatabaseField-org.eclipse.persistence.internal.expressions.SQLSelectStatement-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>writeField</h4>
<pre>protected&nbsp;void&nbsp;writeField(org.eclipse.persistence.internal.expressions.ExpressionSQLPrinter&nbsp;printer,
                          org.eclipse.persistence.internal.helper.DatabaseField&nbsp;field,
                          org.eclipse.persistence.internal.expressions.SQLSelectStatement&nbsp;statement)</pre>
<div class="block">INTERNAL:
 Append the field name to the writer. Should be overridden for special operators such as functions.</div>
</li>
</ul>
<a name="writeAlias-org.eclipse.persistence.internal.expressions.ExpressionSQLPrinter-org.eclipse.persistence.internal.helper.DatabaseField-org.eclipse.persistence.internal.expressions.SQLSelectStatement-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>writeAlias</h4>
<pre>protected&nbsp;void&nbsp;writeAlias(org.eclipse.persistence.internal.expressions.ExpressionSQLPrinter&nbsp;printer,
                          org.eclipse.persistence.internal.helper.DatabaseField&nbsp;field,
                          org.eclipse.persistence.internal.expressions.SQLSelectStatement&nbsp;statement)</pre>
<div class="block">INTERNAL:
 Append the field's alias to the writer.
 This is used for pessimistic locking.</div>
</li>
</ul>
<a name="writeFields-org.eclipse.persistence.internal.expressions.ExpressionSQLPrinter-java.util.List-org.eclipse.persistence.internal.expressions.SQLSelectStatement-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>writeFields</h4>
<pre>public&nbsp;void&nbsp;writeFields(org.eclipse.persistence.internal.expressions.ExpressionSQLPrinter&nbsp;printer,
                        <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.eclipse.persistence.internal.helper.DatabaseField&gt;&nbsp;newFields,
                        org.eclipse.persistence.internal.expressions.SQLSelectStatement&nbsp;statement)</pre>
<div class="block">INTERNAL:
 called from SQLSelectStatement.writeFieldsFromExpression(...)</div>
</li>
</ul>
<a name="writeSubexpressionsTo-java.io.BufferedWriter-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>writeSubexpressionsTo</h4>
<pre>public&nbsp;void&nbsp;writeSubexpressionsTo(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/BufferedWriter.html?is-external=true" title="class or interface in java.io">BufferedWriter</a>&nbsp;writer,
                                  int&nbsp;indent)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block">INTERNAL:
 Used in SQL printing.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="any-byte:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>any</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;any(byte[]&nbsp;theBytes)</pre>
<div class="block">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</div>
</li>
</ul>
<a name="any-char:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>any</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;any(char[]&nbsp;theChars)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="any-double:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>any</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;any(double[]&nbsp;theDoubles)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="any-float:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>any</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;any(float[]&nbsp;theFloats)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="any-int:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>any</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;any(int[]&nbsp;theInts)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="any-long:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>any</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;any(long[]&nbsp;theLongs)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="any-java.lang.Object:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>any</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;any(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;theObjects)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="any-short:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>any</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;any(short[]&nbsp;theShorts)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="any-boolean:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>any</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;any(boolean[]&nbsp;theBooleans)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="any-java.util.List-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>any</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;any(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;theObjects)</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("age").in(ages)
     Java: ages.contains(employee.getAge())
     SQL: AGE IN (55, 18, 30)
 </pre></blockquote></div>
</li>
</ul>
<a name="any-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>any</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;any(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</pre>
</li>
</ul>
<a name="union-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>union</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;union(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</pre>
<div class="block">PUBLIC:
 Return a union expression with the subquery.</div>
</li>
</ul>
<a name="intersect-org.eclipse.persistence.queries.ReportQuery-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>intersect</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;intersect(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;query)</pre>
<div class="block">PUBLIC:
 Return a intersect expression with the subquery.</div>
</li>
</ul>
<a name="intersectAll-org.eclipse.persistence.queries.ReportQuery-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>intersectAll</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;intersectAll(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;query)</pre>
<div class="block">PUBLIC:
 Return a intersect all expression with the subquery.</div>
</li>
</ul>
<a name="intersect-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>intersect</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;intersect(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</pre>
<div class="block">PUBLIC:
 Return a intersect expression with the subquery.</div>
</li>
</ul>
<a name="except-org.eclipse.persistence.queries.ReportQuery-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>except</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;except(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;query)</pre>
<div class="block">PUBLIC:
 Return a except expression with the subquery.</div>
</li>
</ul>
<a name="exceptAll-org.eclipse.persistence.queries.ReportQuery-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>exceptAll</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;exceptAll(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;query)</pre>
<div class="block">PUBLIC:
 Return a except all expression with the subquery.</div>
</li>
</ul>
<a name="except-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>except</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;except(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</pre>
<div class="block">PUBLIC:
 Return a except expression with the subquery.</div>
</li>
</ul>
<a name="union-org.eclipse.persistence.queries.ReportQuery-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>union</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;union(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;query)</pre>
<div class="block">PUBLIC:
 Return a union expression with the subquery.</div>
</li>
</ul>
<a name="unionAll-org.eclipse.persistence.queries.ReportQuery-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unionAll</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;unionAll(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;query)</pre>
<div class="block">PUBLIC:
 Return a union all expression with the subquery.</div>
</li>
</ul>
<a name="unionAll-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unionAll</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;unionAll(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</pre>
<div class="block">PUBLIC:
 Return a union all expression with the subquery.</div>
</li>
</ul>
<a name="intersectAll-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>intersectAll</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;intersectAll(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</pre>
<div class="block">PUBLIC:
 Return a intersect all expression with the subquery.</div>
</li>
</ul>
<a name="exceptAll-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>exceptAll</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;exceptAll(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</pre>
<div class="block">PUBLIC:
 Return a except all expression with the subquery.</div>
</li>
</ul>
<a name="any-org.eclipse.persistence.queries.ReportQuery-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>any</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;any(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;subQuery)</pre>
</li>
</ul>
<a name="some-byte:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>some</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;some(byte[]&nbsp;theBytes)</pre>
<div class="block">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</div>
</li>
</ul>
<a name="some-char:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>some</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;some(char[]&nbsp;theChars)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="some-double:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>some</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;some(double[]&nbsp;theDoubles)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="some-float:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>some</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;some(float[]&nbsp;theFloats)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="some-int:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>some</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;some(int[]&nbsp;theInts)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="some-long:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>some</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;some(long[]&nbsp;theLongs)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="some-java.lang.Object:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>some</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;some(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;theObjects)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="some-short:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>some</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;some(short[]&nbsp;theShorts)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="some-boolean:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>some</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;some(boolean[]&nbsp;theBooleans)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="some-java.util.List-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>some</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;some(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;theObjects)</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("age").in(ages)
     Java: ages.contains(employee.getAge())
     SQL: AGE IN (55, 18, 30)
 </pre></blockquote></div>
</li>
</ul>
<a name="some-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>some</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;some(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</pre>
</li>
</ul>
<a name="some-org.eclipse.persistence.queries.ReportQuery-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>some</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;some(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;subQuery)</pre>
</li>
</ul>
<a name="all-byte:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>all</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;all(byte[]&nbsp;theBytes)</pre>
<div class="block">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</div>
</li>
</ul>
<a name="all-char:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>all</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;all(char[]&nbsp;theChars)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="all-double:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>all</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;all(double[]&nbsp;theDoubles)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="all-float:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>all</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;all(float[]&nbsp;theFloats)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="all-int:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>all</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;all(int[]&nbsp;theInts)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="all-long:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>all</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;all(long[]&nbsp;theLongs)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="all-java.lang.Object:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>all</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;all(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;theObjects)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="all-short:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>all</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;all(short[]&nbsp;theShorts)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="all-boolean:A-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>all</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;all(boolean[]&nbsp;theBooleans)</pre>
<div class="block">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.</div>
</li>
</ul>
<a name="all-java.util.List-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>all</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;all(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&nbsp;theObjects)</pre>
<div class="block">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.
 <p>Example:
 <blockquote><pre>
     EclipseLink: employee.get("age").in(ages)
     Java: ages.contains(employee.getAge())
     SQL: AGE IN (55, 18, 30)
 </pre></blockquote></div>
</li>
</ul>
<a name="all-org.eclipse.persistence.expressions.Expression-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>all</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;all(<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;arguments)</pre>
</li>
</ul>
<a name="all-org.eclipse.persistence.queries.ReportQuery-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>all</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/expressions/Expression.html" title="class in org.eclipse.persistence.expressions">Expression</a>&nbsp;all(<a href="../../../../org/eclipse/persistence/queries/ReportQuery.html" title="class in org.eclipse.persistence.queries">ReportQuery</a>&nbsp;subQuery)</pre>
</li>
</ul>
<a name="getLeafDescriptor-org.eclipse.persistence.queries.DatabaseQuery-org.eclipse.persistence.descriptors.ClassDescriptor-org.eclipse.persistence.internal.sessions.AbstractSession-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getLeafDescriptor</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/descriptors/ClassDescriptor.html" title="class in org.eclipse.persistence.descriptors">ClassDescriptor</a>&nbsp;getLeafDescriptor(<a href="../../../../org/eclipse/persistence/queries/DatabaseQuery.html" title="class in org.eclipse.persistence.queries">DatabaseQuery</a>&nbsp;query,
                                         <a href="../../../../org/eclipse/persistence/descriptors/ClassDescriptor.html" title="class in org.eclipse.persistence.descriptors">ClassDescriptor</a>&nbsp;rootDescriptor,
                                         org.eclipse.persistence.internal.sessions.AbstractSession&nbsp;session)</pre>
<div class="block">INTERNAL:
 Lookup the descriptor for this item by traversing its expression recursively.</div>
</li>
</ul>
<a name="getLeafMapping-org.eclipse.persistence.queries.DatabaseQuery-org.eclipse.persistence.descriptors.ClassDescriptor-org.eclipse.persistence.internal.sessions.AbstractSession-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>getLeafMapping</h4>
<pre>public&nbsp;<a href="../../../../org/eclipse/persistence/mappings/DatabaseMapping.html" title="class in org.eclipse.persistence.mappings">DatabaseMapping</a>&nbsp;getLeafMapping(<a href="../../../../org/eclipse/persistence/queries/DatabaseQuery.html" title="class in org.eclipse.persistence.queries">DatabaseQuery</a>&nbsp;query,
                                      <a href="../../../../org/eclipse/persistence/descriptors/ClassDescriptor.html" title="class in org.eclipse.persistence.descriptors">ClassDescriptor</a>&nbsp;rootDescriptor,
                                      org.eclipse.persistence.internal.sessions.AbstractSession&nbsp;session)</pre>
<div class="block">INTERNAL:
 Lookup the mapping for this item by traversing its expression recursively.
 If an aggregate of foreign mapping is found it is traversed.</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage">EclipseLink 3.0.2, API Reference</div>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../org/eclipse/persistence/expressions/ExpressionBuilder.html" title="class in org.eclipse.persistence.expressions"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/eclipse/persistence/expressions/Expression.html" target="_top">Frames</a></li>
<li><a href="Expression.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2021 <a href="http://www.eclipse.org/eclipselink">Eclipse.org - EclipseLink Project</a>. All rights reserved.</small></p>
</body>
</html>
