<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.5.0_22) on Thu Aug 26 09:51:00 CDT 2010 -->
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<TITLE>
ExpressionStoreQuery (OpenJPA 1.0.4 API)
</TITLE>

<META NAME="keywords" CONTENT="org.apache.openjpa.kernel.ExpressionStoreQuery class">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    parent.document.title="ExpressionStoreQuery (OpenJPA 1.0.4 API)";
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/ExpressionStoreQuery.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/DetachState.html" title="interface in org.apache.openjpa.kernel"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/Extent.html" title="interface in org.apache.openjpa.kernel"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html?org/apache/openjpa/kernel/ExpressionStoreQuery.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="ExpressionStoreQuery.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#nested_classes_inherited_from_class_org.apache.openjpa.kernel.AbstractStoreQuery">NESTED</A>&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_org.apache.openjpa.kernel.AbstractStoreQuery">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.apache.openjpa.kernel</FONT>
<BR>
Class ExpressionStoreQuery</H2>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">java.lang.Object</A>
  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html" title="class in org.apache.openjpa.kernel">org.apache.openjpa.kernel.AbstractStoreQuery</A>
      <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>org.apache.openjpa.kernel.ExpressionStoreQuery</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/io/Serializable.html" title="class or interface in java.io">Serializable</A>, <A HREF="../../../../org/apache/openjpa/kernel/QueryOperations.html" title="interface in org.apache.openjpa.kernel">QueryOperations</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html" title="interface in org.apache.openjpa.kernel">StoreQuery</A></DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.html" title="class in org.apache.openjpa.jdbc.kernel">JDBCStoreQuery</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public class <B>ExpressionStoreQuery</B><DT>extends <A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html" title="class in org.apache.openjpa.kernel">AbstractStoreQuery</A></DL>
</PRE>

<P>
Implementation of an expression-based query, which can handle
 String-based query expressions such as JPQL and JDOQL.
 This implementation is suitable for in-memory operation.
 Override the following methods to also support datastore operation:
 <ul>
 <li>Override <A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html#supportsDataStoreExecution()"><CODE>AbstractStoreQuery.supportsDataStoreExecution()</CODE></A> to return
 <code>true</code>.</li>
 <li>Override <A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#executeQuery(org.apache.openjpa.kernel.StoreQuery.Executor, org.apache.openjpa.meta.ClassMetaData, org.apache.openjpa.meta.ClassMetaData[], boolean, org.apache.openjpa.kernel.exps.ExpressionFactory[], org.apache.openjpa.kernel.exps.QueryExpressions[], java.lang.Object[], org.apache.openjpa.kernel.StoreQuery.Range)"><CODE>executeQuery(org.apache.openjpa.kernel.StoreQuery.Executor, org.apache.openjpa.meta.ClassMetaData, org.apache.openjpa.meta.ClassMetaData[], boolean, org.apache.openjpa.kernel.exps.ExpressionFactory[], org.apache.openjpa.kernel.exps.QueryExpressions[], java.lang.Object[], org.apache.openjpa.kernel.StoreQuery.Range)</CODE></A>, <A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#executeDelete(org.apache.openjpa.kernel.StoreQuery.Executor, org.apache.openjpa.meta.ClassMetaData, org.apache.openjpa.meta.ClassMetaData[], boolean, org.apache.openjpa.kernel.exps.ExpressionFactory[], org.apache.openjpa.kernel.exps.QueryExpressions[], java.lang.Object[])"><CODE>executeDelete(org.apache.openjpa.kernel.StoreQuery.Executor, org.apache.openjpa.meta.ClassMetaData, org.apache.openjpa.meta.ClassMetaData[], boolean, org.apache.openjpa.kernel.exps.ExpressionFactory[], org.apache.openjpa.kernel.exps.QueryExpressions[], java.lang.Object[])</CODE></A>, and
 <A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#executeUpdate(org.apache.openjpa.kernel.StoreQuery.Executor, org.apache.openjpa.meta.ClassMetaData, org.apache.openjpa.meta.ClassMetaData[], boolean, org.apache.openjpa.kernel.exps.ExpressionFactory[], org.apache.openjpa.kernel.exps.QueryExpressions[], java.lang.Object[])"><CODE>executeUpdate(org.apache.openjpa.kernel.StoreQuery.Executor, org.apache.openjpa.meta.ClassMetaData, org.apache.openjpa.meta.ClassMetaData[], boolean, org.apache.openjpa.kernel.exps.ExpressionFactory[], org.apache.openjpa.kernel.exps.QueryExpressions[], java.lang.Object[])</CODE></A> to execute the query against the data store.
 Keep in mind that the parameters passed to this method might be in use
 by several threads in different query instances. Thus components like
 the expression factory must either be thread safe, or this method must
 synchronize on them.</li>
 <li>Override <A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#getDataStoreActions(org.apache.openjpa.meta.ClassMetaData, org.apache.openjpa.meta.ClassMetaData[], boolean, org.apache.openjpa.kernel.exps.ExpressionFactory[], org.apache.openjpa.kernel.exps.QueryExpressions[], java.lang.Object[], org.apache.openjpa.kernel.StoreQuery.Range)"><CODE>getDataStoreActions(org.apache.openjpa.meta.ClassMetaData, org.apache.openjpa.meta.ClassMetaData[], boolean, org.apache.openjpa.kernel.exps.ExpressionFactory[], org.apache.openjpa.kernel.exps.QueryExpressions[], java.lang.Object[], org.apache.openjpa.kernel.StoreQuery.Range)</CODE></A> to return a representation of
 the actions that will be taken on the data store. For use in visual
 tools.</li>
 <li>Override <A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#getExpressionFactory(org.apache.openjpa.meta.ClassMetaData)"><CODE>getExpressionFactory(org.apache.openjpa.meta.ClassMetaData)</CODE></A> to return a factory for creating
 expressions in the datastore's language. The factory must be cachable.</li>
 </ul>
<P>

<P>
<DL>
<DT><B>Author:</B></DT>
  <DD>Abe White</DD>
<DT><B>See Also:</B><DD><A HREF="../../../../serialized-form.html#org.apache.openjpa.kernel.ExpressionStoreQuery">Serialized Form</A></DL>
<HR>

<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->

<A NAME="nested_class_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Nested Class Summary</B></FONT></TH>
</TR>
</TABLE>
&nbsp;<A NAME="nested_classes_inherited_from_class_org.apache.openjpa.kernel.AbstractStoreQuery"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Nested classes/interfaces inherited from class org.apache.openjpa.kernel.<A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html" title="class in org.apache.openjpa.kernel">AbstractStoreQuery</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.AbstractExecutor.html" title="class in org.apache.openjpa.kernel">AbstractStoreQuery.AbstractExecutor</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<A NAME="nested_classes_inherited_from_class_org.apache.openjpa.kernel.StoreQuery"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Nested classes/interfaces inherited from interface org.apache.openjpa.kernel.<A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html" title="interface in org.apache.openjpa.kernel">StoreQuery</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.Executor.html" title="interface in org.apache.openjpa.kernel">StoreQuery.Executor</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.Range.html" title="class in org.apache.openjpa.kernel">StoreQuery.Range</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<!-- =========== FIELD SUMMARY =========== -->

<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Field Summary</B></FONT></TH>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_org.apache.openjpa.kernel.AbstractStoreQuery"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from class org.apache.openjpa.kernel.<A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html" title="class in org.apache.openjpa.kernel">AbstractStoreQuery</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html#ctx">ctx</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_org.apache.openjpa.kernel.StoreQuery"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from interface org.apache.openjpa.kernel.<A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html" title="interface in org.apache.openjpa.kernel">StoreQuery</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#EMPTY_BOOLEANS">EMPTY_BOOLEANS</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#EMPTY_CLASSES">EMPTY_CLASSES</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#EMPTY_METAS">EMPTY_METAS</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#EMPTY_OBJECTS">EMPTY_OBJECTS</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#EMPTY_PARAMS">EMPTY_PARAMS</A>, <A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#EMPTY_STRINGS">EMPTY_STRINGS</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_org.apache.openjpa.kernel.QueryOperations"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from interface org.apache.openjpa.kernel.<A HREF="../../../../org/apache/openjpa/kernel/QueryOperations.html" title="interface in org.apache.openjpa.kernel">QueryOperations</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../org/apache/openjpa/kernel/QueryOperations.html#OP_DELETE">OP_DELETE</A>, <A HREF="../../../../org/apache/openjpa/kernel/QueryOperations.html#OP_SELECT">OP_SELECT</A>, <A HREF="../../../../org/apache/openjpa/kernel/QueryOperations.html#OP_UPDATE">OP_UPDATE</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#ExpressionStoreQuery(org.apache.openjpa.kernel.exps.ExpressionParser)">ExpressionStoreQuery</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/exps/ExpressionParser.html" title="interface in org.apache.openjpa.kernel.exps">ExpressionParser</A>&nbsp;parser)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Construct a query with a parser for the language.</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Number.html" title="class or interface in java.lang">Number</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#executeDelete(org.apache.openjpa.kernel.StoreQuery.Executor, org.apache.openjpa.meta.ClassMetaData, org.apache.openjpa.meta.ClassMetaData[], boolean, org.apache.openjpa.kernel.exps.ExpressionFactory[], org.apache.openjpa.kernel.exps.QueryExpressions[], java.lang.Object[])">executeDelete</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.Executor.html" title="interface in org.apache.openjpa.kernel">StoreQuery.Executor</A>&nbsp;ex,
              <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;base,
              <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>[]&nbsp;types,
              boolean&nbsp;subclasses,
              <A HREF="../../../../org/apache/openjpa/kernel/exps/ExpressionFactory.html" title="interface in org.apache.openjpa.kernel.exps">ExpressionFactory</A>[]&nbsp;facts,
              <A HREF="../../../../org/apache/openjpa/kernel/exps/QueryExpressions.html" title="class in org.apache.openjpa.kernel.exps">QueryExpressions</A>[]&nbsp;parsed,
              <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;params)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Execute the given expression against the given candidate extent
 and delete the instances.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../org/apache/openjpa/lib/rop/ResultObjectProvider.html" title="interface in org.apache.openjpa.lib.rop">ResultObjectProvider</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#executeQuery(org.apache.openjpa.kernel.StoreQuery.Executor, org.apache.openjpa.meta.ClassMetaData, org.apache.openjpa.meta.ClassMetaData[], boolean, org.apache.openjpa.kernel.exps.ExpressionFactory[], org.apache.openjpa.kernel.exps.QueryExpressions[], java.lang.Object[], org.apache.openjpa.kernel.StoreQuery.Range)">executeQuery</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.Executor.html" title="interface in org.apache.openjpa.kernel">StoreQuery.Executor</A>&nbsp;ex,
             <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;base,
             <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>[]&nbsp;types,
             boolean&nbsp;subclasses,
             <A HREF="../../../../org/apache/openjpa/kernel/exps/ExpressionFactory.html" title="interface in org.apache.openjpa.kernel.exps">ExpressionFactory</A>[]&nbsp;facts,
             <A HREF="../../../../org/apache/openjpa/kernel/exps/QueryExpressions.html" title="class in org.apache.openjpa.kernel.exps">QueryExpressions</A>[]&nbsp;parsed,
             <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;params,
             <A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.Range.html" title="class in org.apache.openjpa.kernel">StoreQuery.Range</A>&nbsp;range)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Execute the given expression against the given candidate extent.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Number.html" title="class or interface in java.lang">Number</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#executeUpdate(org.apache.openjpa.kernel.StoreQuery.Executor, org.apache.openjpa.meta.ClassMetaData, org.apache.openjpa.meta.ClassMetaData[], boolean, org.apache.openjpa.kernel.exps.ExpressionFactory[], org.apache.openjpa.kernel.exps.QueryExpressions[], java.lang.Object[])">executeUpdate</A></B>(<A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.Executor.html" title="interface in org.apache.openjpa.kernel">StoreQuery.Executor</A>&nbsp;ex,
              <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;base,
              <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>[]&nbsp;types,
              boolean&nbsp;subclasses,
              <A HREF="../../../../org/apache/openjpa/kernel/exps/ExpressionFactory.html" title="interface in org.apache.openjpa.kernel.exps">ExpressionFactory</A>[]&nbsp;facts,
              <A HREF="../../../../org/apache/openjpa/kernel/exps/QueryExpressions.html" title="class in org.apache.openjpa.kernel.exps">QueryExpressions</A>[]&nbsp;parsed,
              <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;params)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Execute the given expression against the given candidate extent
 and updates the instances.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#getDataStoreActions(org.apache.openjpa.meta.ClassMetaData, org.apache.openjpa.meta.ClassMetaData[], boolean, org.apache.openjpa.kernel.exps.ExpressionFactory[], org.apache.openjpa.kernel.exps.QueryExpressions[], java.lang.Object[], org.apache.openjpa.kernel.StoreQuery.Range)">getDataStoreActions</A></B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;base,
                    <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>[]&nbsp;types,
                    boolean&nbsp;subclasses,
                    <A HREF="../../../../org/apache/openjpa/kernel/exps/ExpressionFactory.html" title="interface in org.apache.openjpa.kernel.exps">ExpressionFactory</A>[]&nbsp;facts,
                    <A HREF="../../../../org/apache/openjpa/kernel/exps/QueryExpressions.html" title="class in org.apache.openjpa.kernel.exps">QueryExpressions</A>[]&nbsp;parsed,
                    <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;params,
                    <A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.Range.html" title="class in org.apache.openjpa.kernel">StoreQuery.Range</A>&nbsp;range)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the commands that will be sent to the datastore in order
 to execute the query, typically in the database's native language.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../org/apache/openjpa/kernel/exps/ExpressionFactory.html" title="interface in org.apache.openjpa.kernel.exps">ExpressionFactory</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#getExpressionFactory(org.apache.openjpa.meta.ClassMetaData)">getExpressionFactory</A></B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;type)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return an <A HREF="../../../../org/apache/openjpa/kernel/exps/ExpressionFactory.html" title="interface in org.apache.openjpa.kernel.exps"><CODE>ExpressionFactory</CODE></A> to use to create an expression to
 be executed against an extent.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/exps/FilterListener.html" title="interface in org.apache.openjpa.kernel.exps">FilterListener</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#getFilterListener(java.lang.String)">getFilterListener</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;tag)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the standard filter listener for the given tag, or null.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>protected &nbsp;<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#getIndependentExpressionCandidates(org.apache.openjpa.meta.ClassMetaData, boolean)">getIndependentExpressionCandidates</A></B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;type,
                                   boolean&nbsp;subclasses)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return the assignable types for the given metadata whose expression
 trees must be compiled independently.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/exps/Resolver.html" title="interface in org.apache.openjpa.kernel.exps">Resolver</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#getResolver()">getResolver</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Resolver used in parsing.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#invalidateCompilation()">invalidateCompilation</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Invalidate any internal compilation state.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#newCompilation()">newCompilation</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Create a new compilation for this query.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.Executor.html" title="interface in org.apache.openjpa.kernel">StoreQuery.Executor</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#newDataStoreExecutor(org.apache.openjpa.meta.ClassMetaData, boolean)">newDataStoreExecutor</A></B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta,
                     boolean&nbsp;subs)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return an executor for datastore execution of this query.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.Executor.html" title="interface in org.apache.openjpa.kernel">StoreQuery.Executor</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#newInMemoryExecutor(org.apache.openjpa.meta.ClassMetaData, boolean)">newInMemoryExecutor</A></B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta,
                    boolean&nbsp;subs)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return an executor for in-memory execution of this query.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#populateFromCompilation(java.lang.Object)">populateFromCompilation</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;comp)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Populate internal data from compilation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#setQuery(java.lang.Object)">setQuery</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;query)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Allow direct setting of parsed state for facades that do parsing.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/apache/openjpa/kernel/ExpressionStoreQuery.html#supportsInMemoryExecution()">supportsInMemoryExecution</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;True if this query supports in-memory execution, false if it
 can only run against the datastore.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_org.apache.openjpa.kernel.AbstractStoreQuery"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class org.apache.openjpa.kernel.<A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html" title="class in org.apache.openjpa.kernel">AbstractStoreQuery</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html#getAggregateListener(java.lang.String)">getAggregateListener</A>, <A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html#getContext()">getContext</A>, <A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html#newCompilationKey()">newCompilationKey</A>, <A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html#requiresCandidateType()">requiresCandidateType</A>, <A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html#requiresParameterDeclarations()">requiresParameterDeclarations</A>, <A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html#setContext(org.apache.openjpa.kernel.QueryContext)">setContext</A>, <A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html#supportsAbstractExecutors()">supportsAbstractExecutors</A>, <A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html#supportsDataStoreExecution()">supportsDataStoreExecution</A>, <A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html#supportsParameterDeclarations()">supportsParameterDeclarations</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#clone()" title="class or interface in java.lang">clone</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#finalize()" title="class or interface in java.lang">finalize</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString()" title="class or interface in java.lang">toString</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ========= CONSTRUCTOR DETAIL ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="ExpressionStoreQuery(org.apache.openjpa.kernel.exps.ExpressionParser)"><!-- --></A><H3>
ExpressionStoreQuery</H3>
<PRE>
public <B>ExpressionStoreQuery</B>(<A HREF="../../../../org/apache/openjpa/kernel/exps/ExpressionParser.html" title="interface in org.apache.openjpa.kernel.exps">ExpressionParser</A>&nbsp;parser)</PRE>
<DL>
<DD>Construct a query with a parser for the language.
<P>
</DL>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="getResolver()"><!-- --></A><H3>
getResolver</H3>
<PRE>
public <A HREF="../../../../org/apache/openjpa/kernel/exps/Resolver.html" title="interface in org.apache.openjpa.kernel.exps">Resolver</A> <B>getResolver</B>()</PRE>
<DL>
<DD>Resolver used in parsing.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="setQuery(java.lang.Object)"><!-- --></A><H3>
setQuery</H3>
<PRE>
public boolean <B>setQuery</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;query)</PRE>
<DL>
<DD>Allow direct setting of parsed state for facades that do parsing.
 The facade should call this method twice: once with the query string,
 and again with the parsed state.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#setQuery(java.lang.Object)">setQuery</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html" title="interface in org.apache.openjpa.kernel">StoreQuery</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html#setQuery(java.lang.Object)">setQuery</A></CODE> in class <CODE><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html" title="class in org.apache.openjpa.kernel">AbstractStoreQuery</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getFilterListener(java.lang.String)"><!-- --></A><H3>
getFilterListener</H3>
<PRE>
public <A HREF="../../../../org/apache/openjpa/kernel/exps/FilterListener.html" title="interface in org.apache.openjpa.kernel.exps">FilterListener</A> <B>getFilterListener</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>&nbsp;tag)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#getFilterListener(java.lang.String)">StoreQuery</A></CODE></B></DD>
<DD>Return the standard filter listener for the given tag, or null.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#getFilterListener(java.lang.String)">getFilterListener</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html" title="interface in org.apache.openjpa.kernel">StoreQuery</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html#getFilterListener(java.lang.String)">getFilterListener</A></CODE> in class <CODE><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html" title="class in org.apache.openjpa.kernel">AbstractStoreQuery</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="newCompilation()"><!-- --></A><H3>
newCompilation</H3>
<PRE>
public <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A> <B>newCompilation</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#newCompilation()">StoreQuery</A></CODE></B></DD>
<DD>Create a new compilation for this query. May be null.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#newCompilation()">newCompilation</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html" title="interface in org.apache.openjpa.kernel">StoreQuery</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html#newCompilation()">newCompilation</A></CODE> in class <CODE><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html" title="class in org.apache.openjpa.kernel">AbstractStoreQuery</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="populateFromCompilation(java.lang.Object)"><!-- --></A><H3>
populateFromCompilation</H3>
<PRE>
public void <B>populateFromCompilation</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>&nbsp;comp)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#populateFromCompilation(java.lang.Object)">StoreQuery</A></CODE></B></DD>
<DD>Populate internal data from compilation.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#populateFromCompilation(java.lang.Object)">populateFromCompilation</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html" title="interface in org.apache.openjpa.kernel">StoreQuery</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html#populateFromCompilation(java.lang.Object)">populateFromCompilation</A></CODE> in class <CODE><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html" title="class in org.apache.openjpa.kernel">AbstractStoreQuery</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="invalidateCompilation()"><!-- --></A><H3>
invalidateCompilation</H3>
<PRE>
public void <B>invalidateCompilation</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#invalidateCompilation()">StoreQuery</A></CODE></B></DD>
<DD>Invalidate any internal compilation state.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#invalidateCompilation()">invalidateCompilation</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html" title="interface in org.apache.openjpa.kernel">StoreQuery</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html#invalidateCompilation()">invalidateCompilation</A></CODE> in class <CODE><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html" title="class in org.apache.openjpa.kernel">AbstractStoreQuery</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="supportsInMemoryExecution()"><!-- --></A><H3>
supportsInMemoryExecution</H3>
<PRE>
public boolean <B>supportsInMemoryExecution</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#supportsInMemoryExecution()">StoreQuery</A></CODE></B></DD>
<DD>True if this query supports in-memory execution, false if it
 can only run against the datastore.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#supportsInMemoryExecution()">supportsInMemoryExecution</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html" title="interface in org.apache.openjpa.kernel">StoreQuery</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html#supportsInMemoryExecution()">supportsInMemoryExecution</A></CODE> in class <CODE><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html" title="class in org.apache.openjpa.kernel">AbstractStoreQuery</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="newInMemoryExecutor(org.apache.openjpa.meta.ClassMetaData, boolean)"><!-- --></A><H3>
newInMemoryExecutor</H3>
<PRE>
public <A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.Executor.html" title="interface in org.apache.openjpa.kernel">StoreQuery.Executor</A> <B>newInMemoryExecutor</B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta,
                                               boolean&nbsp;subs)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#newInMemoryExecutor(org.apache.openjpa.meta.ClassMetaData, boolean)">StoreQuery</A></CODE></B></DD>
<DD>Return an executor for in-memory execution of this query.
 Executors must be cachable and thread safe. If this class returns
 true from <A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#supportsAbstractExecutors()"><CODE>StoreQuery.supportsAbstractExecutors()</CODE></A>, the given metadata
 will always be for the candidate class of this query, or possibly
 null if the candidate class is not itself persistence capable (like
 an interface or abstract base class). Otherwise, the given type will
 be a mapped class.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#newInMemoryExecutor(org.apache.openjpa.meta.ClassMetaData, boolean)">newInMemoryExecutor</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html" title="interface in org.apache.openjpa.kernel">StoreQuery</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html#newInMemoryExecutor(org.apache.openjpa.meta.ClassMetaData, boolean)">newInMemoryExecutor</A></CODE> in class <CODE><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html" title="class in org.apache.openjpa.kernel">AbstractStoreQuery</A></CODE></DL>
</DD>
<DD><DL>
<DD><CODE>subs</CODE> - whether to include dependent mapped subclasses in the
 results; independent subclasses should never be included</DL>
</DD>
</DL>
<HR>

<A NAME="newDataStoreExecutor(org.apache.openjpa.meta.ClassMetaData, boolean)"><!-- --></A><H3>
newDataStoreExecutor</H3>
<PRE>
public <A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.Executor.html" title="interface in org.apache.openjpa.kernel">StoreQuery.Executor</A> <B>newDataStoreExecutor</B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;meta,
                                                boolean&nbsp;subs)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#newDataStoreExecutor(org.apache.openjpa.meta.ClassMetaData, boolean)">StoreQuery</A></CODE></B></DD>
<DD>Return an executor for datastore execution of this query.
 Executors must be cachable and thread safe. If this class returns
 true from <A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#supportsAbstractExecutors()"><CODE>StoreQuery.supportsAbstractExecutors()</CODE></A>, the given metadata
 will always be for the candidate class of this query, or possibly
 null if the candidate class is not itself persistence capable (like
 an interface or abstract base class). Otherwise, the given type will
 be a mapped class.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html#newDataStoreExecutor(org.apache.openjpa.meta.ClassMetaData, boolean)">newDataStoreExecutor</A></CODE> in interface <CODE><A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.html" title="interface in org.apache.openjpa.kernel">StoreQuery</A></CODE><DT><B>Overrides:</B><DD><CODE><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html#newDataStoreExecutor(org.apache.openjpa.meta.ClassMetaData, boolean)">newDataStoreExecutor</A></CODE> in class <CODE><A HREF="../../../../org/apache/openjpa/kernel/AbstractStoreQuery.html" title="class in org.apache.openjpa.kernel">AbstractStoreQuery</A></CODE></DL>
</DD>
<DD><DL>
<DD><CODE>subs</CODE> - whether to include dependent mapped subclasses in the
 results; independent subclasses should never be included</DL>
</DD>
</DL>
<HR>

<A NAME="executeQuery(org.apache.openjpa.kernel.StoreQuery.Executor, org.apache.openjpa.meta.ClassMetaData, org.apache.openjpa.meta.ClassMetaData[], boolean, org.apache.openjpa.kernel.exps.ExpressionFactory[], org.apache.openjpa.kernel.exps.QueryExpressions[], java.lang.Object[], org.apache.openjpa.kernel.StoreQuery.Range)"><!-- --></A><H3>
executeQuery</H3>
<PRE>
protected <A HREF="../../../../org/apache/openjpa/lib/rop/ResultObjectProvider.html" title="interface in org.apache.openjpa.lib.rop">ResultObjectProvider</A> <B>executeQuery</B>(<A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.Executor.html" title="interface in org.apache.openjpa.kernel">StoreQuery.Executor</A>&nbsp;ex,
                                            <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;base,
                                            <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>[]&nbsp;types,
                                            boolean&nbsp;subclasses,
                                            <A HREF="../../../../org/apache/openjpa/kernel/exps/ExpressionFactory.html" title="interface in org.apache.openjpa.kernel.exps">ExpressionFactory</A>[]&nbsp;facts,
                                            <A HREF="../../../../org/apache/openjpa/kernel/exps/QueryExpressions.html" title="class in org.apache.openjpa.kernel.exps">QueryExpressions</A>[]&nbsp;parsed,
                                            <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;params,
                                            <A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.Range.html" title="class in org.apache.openjpa.kernel">StoreQuery.Range</A>&nbsp;range)</PRE>
<DL>
<DD>Execute the given expression against the given candidate extent.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>ex</CODE> - current executor<DD><CODE>base</CODE> - the base type the query should match<DD><CODE>types</CODE> - the independent candidate types<DD><CODE>subclasses</CODE> - true if subclasses should be included in the results<DD><CODE>facts</CODE> - the expression factory used to build the query for
 each base type<DD><CODE>parsed</CODE> - the parsed query values<DD><CODE>params</CODE> - parameter values, or empty array<DD><CODE>range</CODE> - result range
<DT><B>Returns:</B><DD>a provider for matching objects</DL>
</DD>
</DL>
<HR>

<A NAME="executeDelete(org.apache.openjpa.kernel.StoreQuery.Executor, org.apache.openjpa.meta.ClassMetaData, org.apache.openjpa.meta.ClassMetaData[], boolean, org.apache.openjpa.kernel.exps.ExpressionFactory[], org.apache.openjpa.kernel.exps.QueryExpressions[], java.lang.Object[])"><!-- --></A><H3>
executeDelete</H3>
<PRE>
protected <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Number.html" title="class or interface in java.lang">Number</A> <B>executeDelete</B>(<A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.Executor.html" title="interface in org.apache.openjpa.kernel">StoreQuery.Executor</A>&nbsp;ex,
                               <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;base,
                               <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>[]&nbsp;types,
                               boolean&nbsp;subclasses,
                               <A HREF="../../../../org/apache/openjpa/kernel/exps/ExpressionFactory.html" title="interface in org.apache.openjpa.kernel.exps">ExpressionFactory</A>[]&nbsp;facts,
                               <A HREF="../../../../org/apache/openjpa/kernel/exps/QueryExpressions.html" title="class in org.apache.openjpa.kernel.exps">QueryExpressions</A>[]&nbsp;parsed,
                               <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;params)</PRE>
<DL>
<DD>Execute the given expression against the given candidate extent
 and delete the instances.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>ex</CODE> - current executor<DD><CODE>base</CODE> - the base type the query should match<DD><CODE>types</CODE> - the independent candidate types<DD><CODE>subclasses</CODE> - true if subclasses should be included in the results<DD><CODE>facts</CODE> - the expression factory used to build the query for
 each base type<DD><CODE>parsed</CODE> - the parsed query values<DD><CODE>params</CODE> - parameter values, or empty array
<DT><B>Returns:</B><DD>a number indicating the number of instances deleted,
 or null to execute the delete in memory</DL>
</DD>
</DL>
<HR>

<A NAME="executeUpdate(org.apache.openjpa.kernel.StoreQuery.Executor, org.apache.openjpa.meta.ClassMetaData, org.apache.openjpa.meta.ClassMetaData[], boolean, org.apache.openjpa.kernel.exps.ExpressionFactory[], org.apache.openjpa.kernel.exps.QueryExpressions[], java.lang.Object[])"><!-- --></A><H3>
executeUpdate</H3>
<PRE>
protected <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Number.html" title="class or interface in java.lang">Number</A> <B>executeUpdate</B>(<A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.Executor.html" title="interface in org.apache.openjpa.kernel">StoreQuery.Executor</A>&nbsp;ex,
                               <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;base,
                               <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>[]&nbsp;types,
                               boolean&nbsp;subclasses,
                               <A HREF="../../../../org/apache/openjpa/kernel/exps/ExpressionFactory.html" title="interface in org.apache.openjpa.kernel.exps">ExpressionFactory</A>[]&nbsp;facts,
                               <A HREF="../../../../org/apache/openjpa/kernel/exps/QueryExpressions.html" title="class in org.apache.openjpa.kernel.exps">QueryExpressions</A>[]&nbsp;parsed,
                               <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;params)</PRE>
<DL>
<DD>Execute the given expression against the given candidate extent
 and updates the instances.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>ex</CODE> - current executor<DD><CODE>base</CODE> - the base type the query should match<DD><CODE>types</CODE> - the independent candidate types<DD><CODE>subclasses</CODE> - true if subclasses should be included in the results<DD><CODE>facts</CODE> - the expression factory used to build the query for
 each base type<DD><CODE>parsed</CODE> - the parsed query values<DD><CODE>params</CODE> - parameter values, or empty array
<DT><B>Returns:</B><DD>a number indicating the number of instances updated,
 or null to execute the update in memory.</DL>
</DD>
</DL>
<HR>

<A NAME="getDataStoreActions(org.apache.openjpa.meta.ClassMetaData, org.apache.openjpa.meta.ClassMetaData[], boolean, org.apache.openjpa.kernel.exps.ExpressionFactory[], org.apache.openjpa.kernel.exps.QueryExpressions[], java.lang.Object[], org.apache.openjpa.kernel.StoreQuery.Range)"><!-- --></A><H3>
getDataStoreActions</H3>
<PRE>
protected <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html" title="class or interface in java.lang">String</A>[] <B>getDataStoreActions</B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;base,
                                       <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>[]&nbsp;types,
                                       boolean&nbsp;subclasses,
                                       <A HREF="../../../../org/apache/openjpa/kernel/exps/ExpressionFactory.html" title="interface in org.apache.openjpa.kernel.exps">ExpressionFactory</A>[]&nbsp;facts,
                                       <A HREF="../../../../org/apache/openjpa/kernel/exps/QueryExpressions.html" title="class in org.apache.openjpa.kernel.exps">QueryExpressions</A>[]&nbsp;parsed,
                                       <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html" title="class or interface in java.lang">Object</A>[]&nbsp;params,
                                       <A HREF="../../../../org/apache/openjpa/kernel/StoreQuery.Range.html" title="class in org.apache.openjpa.kernel">StoreQuery.Range</A>&nbsp;range)</PRE>
<DL>
<DD>Return the commands that will be sent to the datastore in order
 to execute the query, typically in the database's native language.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>base</CODE> - the base type the query should match<DD><CODE>types</CODE> - the independent candidate types<DD><CODE>subclasses</CODE> - true if subclasses should be included in the results<DD><CODE>facts</CODE> - the expression factory used to build the query for
 each base type<DD><CODE>parsed</CODE> - the parsed query values<DD><CODE>params</CODE> - parameter values, or empty array<DD><CODE>range</CODE> - result range
<DT><B>Returns:</B><DD>a textual description of the query to execute</DL>
</DD>
</DL>
<HR>

<A NAME="getIndependentExpressionCandidates(org.apache.openjpa.meta.ClassMetaData, boolean)"><!-- --></A><H3>
getIndependentExpressionCandidates</H3>
<PRE>
protected <A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>[] <B>getIndependentExpressionCandidates</B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;type,
                                                             boolean&nbsp;subclasses)</PRE>
<DL>
<DD>Return the assignable types for the given metadata whose expression
 trees must be compiled independently.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getExpressionFactory(org.apache.openjpa.meta.ClassMetaData)"><!-- --></A><H3>
getExpressionFactory</H3>
<PRE>
protected <A HREF="../../../../org/apache/openjpa/kernel/exps/ExpressionFactory.html" title="interface in org.apache.openjpa.kernel.exps">ExpressionFactory</A> <B>getExpressionFactory</B>(<A HREF="../../../../org/apache/openjpa/meta/ClassMetaData.html" title="class in org.apache.openjpa.meta">ClassMetaData</A>&nbsp;type)</PRE>
<DL>
<DD>Return an <A HREF="../../../../org/apache/openjpa/kernel/exps/ExpressionFactory.html" title="interface in org.apache.openjpa.kernel.exps"><CODE>ExpressionFactory</CODE></A> to use to create an expression to
 be executed against an extent. Each factory will be used to compile
 one filter only. The factory must be cachable.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/ExpressionStoreQuery.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/DetachState.html" title="interface in org.apache.openjpa.kernel"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../org/apache/openjpa/kernel/Extent.html" title="interface in org.apache.openjpa.kernel"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html?org/apache/openjpa/kernel/ExpressionStoreQuery.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="ExpressionStoreQuery.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#nested_classes_inherited_from_class_org.apache.openjpa.kernel.AbstractStoreQuery">NESTED</A>&nbsp;|&nbsp;<A HREF="#fields_inherited_from_class_org.apache.openjpa.kernel.AbstractStoreQuery">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright &#169; 2006-2010 <a href="http://www.apache.org">Apache Software Foundation</a>. All Rights Reserved.
</BODY>
</HTML>
