Package org.apache.openjpa.jdbc.sql
Interface Select
- All Superinterfaces:
SelectExecutor
- All Known Implementing Classes:
LogicalUnion.UnionSelect
,SelectImpl
Abstraction of a SQL SELECT statement.
- Author:
- Abe White
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
Constant indicating to batch the select using an inner join.static final int
Constant indicating to batch the select using an outer join.static final int
Constant indicating to use a separate select executed in parallel.static final String
The alias to use for the from select, if any.static final int
Constant indicating to select subclasses but without adding any class conditions to the select.static final int
Constant indicating to select this class but without adding any class conditions to the select.static final int
Constant indicating to add conditions to the selcet to select this class and joinable subclasses only.static final int
Constant indicating to add conditions to the select to select this class only.static final int
Constant indicating a select can be made without joins.static final int
Constant indicating a two-part select and load. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Apply class conditions from relation joins.AND the given joins together.void
Append the given joins to the given buffer.void
Clear odering conditions.void
Clear the existing column selects.ctx()
Return the JPQL query context of this selecteagerClone
(FieldMapping key, int eagerType, boolean toMany, int sels) Return a select that will be eagerly executed with this one, or null if the select cannot be created for the given key and join type.fullClone
(int sels) Return a SELECT that is a complete clone of this one.getColumnAlias
(String col, Table table) Return the alias for the given column.getColumnAlias
(String col, Table table, Joins joins) Return the alias for the given column.getColumnAlias
(Column col) Return the alias for the given column.getColumnAlias
(Column col, Object path) Return the alias for the given column, without creating new table aliasgetColumnAlias
(Column col, Joins joins) Return the alias for the given column.getEager
(FieldMapping key) Return the eager select for the given key.long
The result end index.get joined table metadatas excluded for polymorphic queriesAnother select instance that creates a temporary table from which this select pulls data.Return the grouping SQL for this select.boolean
Return the flag to indicate whether this Select has internally generated subselectReturn the HAVING clause, or null if none.Get the aliases for identifier columns that can be used in COUNT selects to find the number of matches.get joined table metadatas for polymorphic queriesReturn the top-levelJoin
elements for this select.getJoins()
Return the top-level joins for this select.Return the ordering SQL for this select.Return the parent of this select, if it is a subselect.Return the aliases of all selected columns and all selected buffers, in the order they were selected.Return the actualVal
s andColumn
s that were selected, in the order that they were selected.long
The result start index.Return the subselect path for this select, if it is a subselect.Return this select's subselects, or empty collection if none.Return the set of all used table aliases.get table-per-class metadata for polymorphic queriesgetWhere()
Return the WHERE clause, minus any necessary end joins.void
Add a GROUP BY clause.void
Add a GROUP BY clause.void
groupBy
(ClassMapping mapping, int subclasses, JDBCStore store, JDBCFetchConfiguration fetch) Group by the columns of the given mapping, possibly including subclasses.void
groupBy
(ClassMapping mapping, int subclasses, JDBCStore store, JDBCFetchConfiguration fetch, Joins joins) Group by the columns of the given mapping, possibly including subclasses.void
Group by the given column.void
Group by the given columns.void
Group by the given columns.void
Group by the given column.void
Add a GROUP BY clause.void
Add a GROUP BY clause.boolean
hasEagerJoin
(boolean toMany) Whether this select has an eager join of the specified type.boolean
hasJoin
(boolean toMany) Whether this select has a join of the specified type.void
Add the given having conditions.void
Add the given having conditions.void
Add the given having conditions.void
Add the given having conditions.int
indexOf()
The index of this select within the UNION, or 0.boolean
Return true if this is an aggregate select.boolean
isLob()
Return true if this select includes a LOB.boolean
isSelected
(Table table) Return whether the given table is being used in this select.void
Extended trace that logs eager relationsnewJoins()
Return a new instance to use for joining.Return a new instance to use for outer joining.OR the given joins together.boolean
Add an ORDER BY clause.boolean
Add an ORDER BY clause.int
Order by the given columns.int
Order by the given columns.boolean
Order by the given column.boolean
Order by the given column.boolean
Add an ORDER BY clause.boolean
Add an ORDER BY clause.int
orderByPrimaryKey
(ClassMapping mapping, boolean asc, boolean sel) Order on the primary key columns of the given mapping, joining to superclasses as necessary to get all columns needed to construct an object id.int
orderByPrimaryKey
(ClassMapping mapping, boolean asc, Joins joins, boolean sel) Select and order on the primary key columns of the given mapping, joining to superclasses as necessary to get all columns needed to construct an object id.Return a join set making the given joins outer joins.boolean
Select the given SQL; the given id object is an identifier to use when retrieving the corresponding value from aResult
.boolean
Select the given SQL; the given id object is an identifier to use when retrieving the corresponding value from aResult
.void
select
(ClassMapping mapping, int subclasses, JDBCStore store, JDBCFetchConfiguration fetch, int eager) Select the columns of the given mapping, possibly including subclasses.void
select
(ClassMapping mapping, int subclasses, JDBCStore store, JDBCFetchConfiguration fetch, int eager, Joins joins) Select the columns of the given mapping, possibly including subclasses.boolean
Select the given column.int
Select the given columns.int
Select the given columns.boolean
Select the given column.boolean
Select the given SQL; the given id object is an identifier to use when retrieving the corresponding value from aResult
.boolean
Select the given SQL; the given id object is an identifier to use when retrieving the corresponding value from aResult
.void
selectIdentifier
(ClassMapping mapping, int subclasses, JDBCStore store, JDBCFetchConfiguration fetch, int eager) Select the columns of the given mapping, possibly including subclasses.void
selectIdentifier
(ClassMapping mapping, int subclasses, JDBCStore store, JDBCFetchConfiguration fetch, int eager, Joins joins) Select the columns of the given mapping, possibly including subclasses.boolean
selectIdentifier
(Column col) Select the given column as one that can be used to get a count of distinct matches.int
selectIdentifier
(Column[] cols) Select the given columns as ones that can be used to get a count of distinct matches.int
selectIdentifier
(Column[] cols, Joins joins) Select the given columns as ones that can be used to get a count of distinct matches.boolean
selectIdentifier
(Column col, Joins joins) Select the given column as one that can be used to get a count of distinct matches.void
selectPlaceholder
(String sql) Select the given SQL as a placeholder for a UNION element.int
selectPrimaryKey
(ClassMapping mapping) Select the primary key columns of the given mapping, joining to superclasses as necessary to get all columns needed to construct an object id.int
selectPrimaryKey
(ClassMapping mapping, Joins joins) Select the primary key columns of the given mapping, joining to superclasses as necessary to get all columns needed to construct an object id.void
setAggregate
(boolean agg) Set to true for aggregate selects.void
setContext
(Context context) Set JPQL query context for this selectvoid
Set joined table metadatas excluded for polymorphic queriesvoid
setFromSelect
(Select sel) Another select instance that creates a temporary table from which this select pulls data.void
setHasSubselect
(boolean hasSub) Set the flag to indicate whether this Select has internally generated subselectvoid
setJoinedTableClassMeta
(List meta) Set joined table metadatas for polymorphic queriesvoid
setLob
(boolean lob) Set to true for selects that include LOB columns.void
Turn this select into a subselect of the given instance.void
setRange
(long start, long end) Set the result range for this select.void
setSchemaAlias
(String schemaAlias) Record the initial schemaAlias of a join pathvoid
Set table-per-class metadata for polymorphic queriestoString()
Implement toString to generate SQL string for profiling/debuggging.void
Add the given where conditions.void
Add the given where conditions.void
Add the given where conditions.void
Add the given where conditions.void
Add the given where conditions.whereClone
(int sels) Return a SELECT with the same joins and where conditions as this one.void
whereForeignKey
(ForeignKey fk, Object oid, ClassMapping mapping, JDBCStore store) Add where conditions setting the given foreign key to the given oid values.void
wherePrimaryKey
(Object oid, ClassMapping mapping, JDBCStore store) Add where conditions setting the mapping's primary key to the given oid values.Methods inherited from interface org.apache.openjpa.jdbc.sql.SelectExecutor
execute, execute, getAutoDistinct, getConfiguration, getCount, getExpectedResultCount, getJoinSyntax, getSQL, hasMultipleSelects, isDistinct, isLRS, setAutoDistinct, setDistinct, setExpectedResultCount, setJoinSyntax, setLRS, supportsLocking, supportsRandomAccess, toSelect, toSelectCount
-
Field Details
-
EAGER_INNER
static final int EAGER_INNERConstant indicating to batch the select using an inner join.- See Also:
-
EAGER_OUTER
static final int EAGER_OUTERConstant indicating to batch the select using an outer join.- See Also:
-
EAGER_PARALLEL
static final int EAGER_PARALLELConstant indicating to use a separate select executed in parallel.- See Also:
-
TYPE_JOINLESS
static final int TYPE_JOINLESSConstant indicating a select can be made without joins.- See Also:
-
TYPE_TWO_PART
static final int TYPE_TWO_PARTConstant indicating a two-part select and load.- See Also:
-
SUBS_JOINABLE
static final int SUBS_JOINABLEConstant indicating to add conditions to the selcet to select this class and joinable subclasses only.- See Also:
-
SUBS_NONE
static final int SUBS_NONEConstant indicating to add conditions to the select to select this class only.- See Also:
-
SUBS_ANY_JOINABLE
static final int SUBS_ANY_JOINABLEConstant indicating to select subclasses but without adding any class conditions to the select.- See Also:
-
SUBS_EXACT
static final int SUBS_EXACTConstant indicating to select this class but without adding any class conditions to the select.- See Also:
-
FROM_SELECT_ALIAS
The alias to use for the from select, if any.- See Also:
-
-
Method Details
-
indexOf
int indexOf()The index of this select within the UNION, or 0. -
getSubselects
List getSubselects()Return this select's subselects, or empty collection if none. -
getParent
Select getParent()Return the parent of this select, if it is a subselect. -
getSubselectPath
String getSubselectPath()Return the subselect path for this select, if it is a subselect. -
setParent
Turn this select into a subselect of the given instance. -
getFromSelect
Select getFromSelect()Another select instance that creates a temporary table from which this select pulls data. -
setFromSelect
Another select instance that creates a temporary table from which this select pulls data. -
hasEagerJoin
boolean hasEagerJoin(boolean toMany) Whether this select has an eager join of the specified type. -
hasJoin
boolean hasJoin(boolean toMany) Whether this select has a join of the specified type. -
isSelected
Return whether the given table is being used in this select. -
getTableAliases
Collection getTableAliases()Return the set of all used table aliases. -
getSelects
List getSelects()Return the actualVal
s andColumn
s that were selected, in the order that they were selected.- Since:
- 1.1.0
-
getSelectAliases
List getSelectAliases()Return the aliases of all selected columns and all selected buffers, in the order they were selected. Each alias may be either a string or aSQLBuffer
. -
getIdentifierAliases
List getIdentifierAliases()Get the aliases for identifier columns that can be used in COUNT selects to find the number of matches. Each alias will be a string. If no identifier columns have been nominated, then all column alises are returned. -
getOrdering
SQLBuffer getOrdering()Return the ordering SQL for this select. -
getGrouping
SQLBuffer getGrouping()Return the grouping SQL for this select. -
getWhere
SQLBuffer getWhere()Return the WHERE clause, minus any necessary end joins. -
getHaving
SQLBuffer getHaving()Return the HAVING clause, or null if none. -
addJoinClassConditions
void addJoinClassConditions()Apply class conditions from relation joins. This may affect the return values ofgetJoins()
,getJoinIterator()
, andgetWhere()
. -
getJoins
Joins getJoins()Return the top-level joins for this select. -
getJoinIterator
Iterator getJoinIterator()Return the top-levelJoin
elements for this select. -
getStartIndex
long getStartIndex()The result start index. -
getEndIndex
long getEndIndex()The result end index. -
setRange
void setRange(long start, long end) Set the result range for this select. -
getColumnAlias
Return the alias for the given column. -
getColumnAlias
Return the alias for the given column. -
getColumnAlias
Return the alias for the given column. -
getColumnAlias
Return the alias for the given column. -
isAggregate
boolean isAggregate()Return true if this is an aggregate select. -
setAggregate
void setAggregate(boolean agg) Set to true for aggregate selects. -
isLob
boolean isLob()Return true if this select includes a LOB. -
setLob
void setLob(boolean lob) Set to true for selects that include LOB columns. -
clearSelects
void clearSelects()Clear the existing column selects. -
selectPlaceholder
Select the given SQL as a placeholder for a UNION element. -
select
Select the given SQL; the given id object is an identifier to use when retrieving the corresponding value from aResult
.- Returns:
- true if selected
-
select
Select the given SQL; the given id object is an identifier to use when retrieving the corresponding value from aResult
.- Returns:
- true if selected
-
select
Select the given SQL; the given id object is an identifier to use when retrieving the corresponding value from aResult
.- Returns:
- true if selected
-
select
Select the given SQL; the given id object is an identifier to use when retrieving the corresponding value from aResult
.- Returns:
- true if selected
-
select
Select the given column.- Returns:
- true if selected
-
select
Select the given column.- Returns:
- true if selected
-
select
Select the given columns.- Returns:
- bit set of indexes of columns that were selected
-
select
Select the given columns.- Returns:
- bit set of indexes of columns that were selected
-
select
void select(ClassMapping mapping, int subclasses, JDBCStore store, JDBCFetchConfiguration fetch, int eager) Select the columns of the given mapping, possibly including subclasses. This method should be called after all where conditions are added in case the given mapping batches other selects. -
select
void select(ClassMapping mapping, int subclasses, JDBCStore store, JDBCFetchConfiguration fetch, int eager, Joins joins) Select the columns of the given mapping, possibly including subclasses. This method should be called after all where conditions are added in case the given mapping batches other selects. -
selectIdentifier
Select the given column as one that can be used to get a count of distinct matches. It is not necessary to designate distinct identifiers when eagerly traversing the entire result of the select or when not using an LRSSize setting ofcount
.- Returns:
- true if selected
-
selectIdentifier
Select the given column as one that can be used to get a count of distinct matches. It is not necessary to designate distinct identifiers when eagerly traversing the entire result of the select or when not using an LRSSize setting ofcount
.- Returns:
- true if selected
-
selectIdentifier
Select the given columns as ones that can be used to get a count of distinct matches. It is not necessary to designate distinct identifiers when eagerly traversing the entire result of the select or when not using an LRSSize setting ofcount
.- Returns:
- bit set of indexes of columns that were selected
-
selectIdentifier
Select the given columns as ones that can be used to get a count of distinct matches. It is not necessary to designate distinct identifiers when eagerly traversing the entire result of the select or when not using an LRSSize setting ofcount
.- Returns:
- bit set of indexes of columns that were selected
-
selectIdentifier
void selectIdentifier(ClassMapping mapping, int subclasses, JDBCStore store, JDBCFetchConfiguration fetch, int eager) Select the columns of the given mapping, possibly including subclasses. This method should be called after all where conditions are added in case the given mapping batches other selects. The primary key columns of the mapping can be used to get a count of distinct matches. It is not necessary to designate distinct identifiers when eagerly traversing the entire result of the select or when not using an LRSSize setting ofcount
. -
selectIdentifier
void selectIdentifier(ClassMapping mapping, int subclasses, JDBCStore store, JDBCFetchConfiguration fetch, int eager, Joins joins) Select the columns of the given mapping, possibly including subclasses. This method should be called after all where conditions are added in case the given mapping batches other selects. The primary key columns of the mapping can be used to get a count of distinct matches. It is not necessary to designate distinct identifiers when eagerly traversing the entire result of the select or when not using an LRSSize setting ofcount
. -
selectPrimaryKey
Select the primary key columns of the given mapping, joining to superclasses as necessary to get all columns needed to construct an object id.- Returns:
- bit set of indexes of pk columns that were selected
-
selectPrimaryKey
Select the primary key columns of the given mapping, joining to superclasses as necessary to get all columns needed to construct an object id.- Returns:
- bit set of indexes of pk columns that were selected
-
clearOrdering
void clearOrdering()Clear odering conditions. -
orderByPrimaryKey
Order on the primary key columns of the given mapping, joining to superclasses as necessary to get all columns needed to construct an object id. Optionally selects ordering data if not already selected. -
orderByPrimaryKey
Select and order on the primary key columns of the given mapping, joining to superclasses as necessary to get all columns needed to construct an object id. Optionally selects ordering data if not already selected. -
orderBy
Order by the given column. Optionally selects ordering data if not already selected. -
orderBy
Order by the given column. Optionally selects ordering data if not already selected. -
orderBy
Order by the given columns. Optionally selects ordering data if not already selected. -
orderBy
Order by the given columns. Optionally selects ordering data if not already selected. -
orderBy
Add an ORDER BY clause. Optionally selects ordering data if not already selected. -
orderBy
Add an ORDER BY clause. Optionally selects ordering data if not already selected. -
orderBy
Add an ORDER BY clause. Optionally selects ordering data if not already selected. -
orderBy
Add an ORDER BY clause. Optionally selects ordering data if not already selected. -
wherePrimaryKey
Add where conditions setting the mapping's primary key to the given oid values. If the given mapping does not use oid values for its primary key, we will recursively join to its superclass until we find an ancestor that does. -
whereForeignKey
Add where conditions setting the given foreign key to the given oid values. -
where
Add the given where conditions. -
where
Add the given where conditions. -
where
Add the given where conditions. -
where
Add the given where conditions. -
where
Add the given where conditions. -
having
Add the given having conditions. -
having
Add the given having conditions. -
having
Add the given having conditions. -
having
Add the given having conditions. -
groupBy
Group by the given column. -
groupBy
Group by the given column. -
groupBy
Group by the given columns. -
groupBy
Group by the given columns. -
groupBy
Add a GROUP BY clause. -
groupBy
Add a GROUP BY clause. -
groupBy
Add a GROUP BY clause. -
groupBy
Add a GROUP BY clause. -
groupBy
Group by the columns of the given mapping, possibly including subclasses. Assumes EAGER_NONE. -
groupBy
void groupBy(ClassMapping mapping, int subclasses, JDBCStore store, JDBCFetchConfiguration fetch, Joins joins) Group by the columns of the given mapping, possibly including subclasses. Assumes EAGER_NONE. -
whereClone
Return a SELECT with the same joins and where conditions as this one.- Parameters:
sels
- number of selects to UNION together; ignored if <= 1
-
fullClone
Return a SELECT that is a complete clone of this one.- Parameters:
sels
- number of selects to UNION together; ignored if <= 1
-
eagerClone
Return a select that will be eagerly executed with this one, or null if the select cannot be created for the given key and join type. If the join type is inner or outer, then this select instance will be returned. Otherwise, the returned select will have a clone of this select's where conditions and joins but will be independent.- Parameters:
key
- the key for the eager selecteagerType
- one of the EAGER_* constantstoMany
- whether the eager join is to-manysels
- number of selects to UNION together; ignored if <= 1
-
getEager
Return the eager select for the given key. -
newJoins
Joins newJoins()Return a new instance to use for joining. -
newOuterJoins
Joins newOuterJoins()Return a new instance to use for outer joining. -
append
Append the given joins to the given buffer. -
and
AND the given joins together. The given joins will be hollowed in the process. -
or
OR the given joins together. The common joins will be removed in the process. -
outer
Return a join set making the given joins outer joins. -
toString
String toString()Implement toString to generate SQL string for profiling/debuggging. -
getColumnAlias
Return the alias for the given column, without creating new table alias -
setContext
Set JPQL query context for this select- Parameters:
context
-
-
ctx
Context ctx()Return the JPQL query context of this select -
setSchemaAlias
Record the initial schemaAlias of a join path- Parameters:
schemaAlias
-
-
setHasSubselect
void setHasSubselect(boolean hasSub) Set the flag to indicate whether this Select has internally generated subselect -
getHasSubselect
boolean getHasSubselect()Return the flag to indicate whether this Select has internally generated subselect -
logEagerRelations
void logEagerRelations()Extended trace that logs eager relations -
setTablePerClassMeta
Set table-per-class metadata for polymorphic queries -
getTablePerClassMeta
ClassMapping getTablePerClassMeta()get table-per-class metadata for polymorphic queries -
setJoinedTableClassMeta
Set joined table metadatas for polymorphic queries -
getJoinedTableClassMeta
List getJoinedTableClassMeta()get joined table metadatas for polymorphic queries -
setExcludedJoinedTableClassMeta
Set joined table metadatas excluded for polymorphic queries -
getExcludedJoinedTableClassMeta
List getExcludedJoinedTableClassMeta()get joined table metadatas excluded for polymorphic queries -
getDictionary
DBDictionary getDictionary()
-