Interface Select

All Superinterfaces:
SelectExecutor
All Known Implementing Classes:
LogicalUnion.UnionSelect, SelectImpl

public interface Select extends SelectExecutor
Abstraction of a SQL SELECT statement.
Author:
Abe White
  • Field Details

    • EAGER_INNER

      static final int EAGER_INNER
      Constant indicating to batch the select using an inner join.
      See Also:
    • EAGER_OUTER

      static final int EAGER_OUTER
      Constant indicating to batch the select using an outer join.
      See Also:
    • EAGER_PARALLEL

      static final int EAGER_PARALLEL
      Constant indicating to use a separate select executed in parallel.
      See Also:
    • TYPE_JOINLESS

      static final int TYPE_JOINLESS
      Constant indicating a select can be made without joins.
      See Also:
    • TYPE_TWO_PART

      static final int TYPE_TWO_PART
      Constant indicating a two-part select and load.
      See Also:
    • SUBS_JOINABLE

      static final int SUBS_JOINABLE
      Constant indicating to add conditions to the selcet to select this class and joinable subclasses only.
      See Also:
    • SUBS_NONE

      static final int SUBS_NONE
      Constant indicating to add conditions to the select to select this class only.
      See Also:
    • SUBS_ANY_JOINABLE

      static final int SUBS_ANY_JOINABLE
      Constant indicating to select subclasses but without adding any class conditions to the select.
      See Also:
    • SUBS_EXACT

      static final int SUBS_EXACT
      Constant indicating to select this class but without adding any class conditions to the select.
      See Also:
    • FROM_SELECT_ALIAS

      static final String 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

      void setParent(Select parent, String path)
      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

      void setFromSelect(Select sel)
      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

      boolean isSelected(Table table)
      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 actual Vals and Columns 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 a SQLBuffer.
    • 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 of getJoins(), getJoinIterator(), and getWhere().
    • getJoins

      Joins getJoins()
      Return the top-level joins for this select.
    • getJoinIterator

      Iterator getJoinIterator()
      Return the top-level Join 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

      String getColumnAlias(Column col)
      Return the alias for the given column.
    • getColumnAlias

      String getColumnAlias(Column col, Joins joins)
      Return the alias for the given column.
    • getColumnAlias

      String getColumnAlias(String col, Table table)
      Return the alias for the given column.
    • getColumnAlias

      String getColumnAlias(String col, Table table, Joins joins)
      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

      void selectPlaceholder(String sql)
      Select the given SQL as a placeholder for a UNION element.
    • select

      boolean select(SQLBuffer sql, Object id)
      Select the given SQL; the given id object is an identifier to use when retrieving the corresponding value from a Result.
      Returns:
      true if selected
    • select

      boolean select(SQLBuffer sql, Object id, Joins joins)
      Select the given SQL; the given id object is an identifier to use when retrieving the corresponding value from a Result.
      Returns:
      true if selected
    • select

      boolean select(String sql, Object id)
      Select the given SQL; the given id object is an identifier to use when retrieving the corresponding value from a Result.
      Returns:
      true if selected
    • select

      boolean select(String sql, Object id, Joins joins)
      Select the given SQL; the given id object is an identifier to use when retrieving the corresponding value from a Result.
      Returns:
      true if selected
    • select

      boolean select(Column col)
      Select the given column.
      Returns:
      true if selected
    • select

      boolean select(Column col, Joins joins)
      Select the given column.
      Returns:
      true if selected
    • select

      int select(Column[] cols)
      Select the given columns.
      Returns:
      bit set of indexes of columns that were selected
    • select

      int select(Column[] cols, Joins joins)
      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

      boolean selectIdentifier(Column col)
      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 of count.
      Returns:
      true if selected
    • selectIdentifier

      boolean selectIdentifier(Column col, Joins joins)
      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 of count.
      Returns:
      true if selected
    • selectIdentifier

      int selectIdentifier(Column[] cols)
      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 of count.
      Returns:
      bit set of indexes of columns that were selected
    • selectIdentifier

      int selectIdentifier(Column[] cols, Joins joins)
      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 of count.
      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 of count.
    • 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 of count.
    • selectPrimaryKey

      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.
      Returns:
      bit set of indexes of pk columns that were selected
    • selectPrimaryKey

      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.
      Returns:
      bit set of indexes of pk columns that were selected
    • clearOrdering

      void clearOrdering()
      Clear odering conditions.
    • orderByPrimaryKey

      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. Optionally selects ordering data if not already selected.
    • orderByPrimaryKey

      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. Optionally selects ordering data if not already selected.
    • orderBy

      boolean orderBy(Column col, boolean asc, boolean sel)
      Order by the given column. Optionally selects ordering data if not already selected.
    • orderBy

      boolean orderBy(Column col, boolean asc, Joins joins, boolean sel)
      Order by the given column. Optionally selects ordering data if not already selected.
    • orderBy

      int orderBy(Column[] cols, boolean asc, boolean sel)
      Order by the given columns. Optionally selects ordering data if not already selected.
    • orderBy

      int orderBy(Column[] cols, boolean asc, Joins joins, boolean sel)
      Order by the given columns. Optionally selects ordering data if not already selected.
    • orderBy

      boolean orderBy(SQLBuffer sql, boolean asc, boolean sel, Value selAs)
      Add an ORDER BY clause. Optionally selects ordering data if not already selected.
    • orderBy

      boolean orderBy(SQLBuffer sql, boolean asc, Joins joins, boolean sel, Value selAs)
      Add an ORDER BY clause. Optionally selects ordering data if not already selected.
    • orderBy

      boolean orderBy(String sql, boolean asc, boolean sel)
      Add an ORDER BY clause. Optionally selects ordering data if not already selected.
    • orderBy

      boolean orderBy(String sql, boolean asc, Joins joins, boolean sel)
      Add an ORDER BY clause. Optionally selects ordering data if not already selected.
    • wherePrimaryKey

      void wherePrimaryKey(Object oid, ClassMapping mapping, JDBCStore store)
      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

      void whereForeignKey(ForeignKey fk, Object oid, ClassMapping mapping, JDBCStore store)
      Add where conditions setting the given foreign key to the given oid values.
      See Also:
    • where

      void where(Joins joins)
      Add the given where conditions.
    • where

      void where(SQLBuffer sql)
      Add the given where conditions.
    • where

      void where(SQLBuffer sql, Joins joins)
      Add the given where conditions.
    • where

      void where(String sql)
      Add the given where conditions.
    • where

      void where(String sql, Joins joins)
      Add the given where conditions.
    • having

      void having(SQLBuffer sql)
      Add the given having conditions.
    • having

      void having(SQLBuffer sql, Joins joins)
      Add the given having conditions.
    • having

      void having(String sql)
      Add the given having conditions.
    • having

      void having(String sql, Joins joins)
      Add the given having conditions.
    • groupBy

      void groupBy(Column col)
      Group by the given column.
    • groupBy

      void groupBy(Column col, Joins joins)
      Group by the given column.
    • groupBy

      void groupBy(Column[] cols)
      Group by the given columns.
    • groupBy

      void groupBy(Column[] cols, Joins joins)
      Group by the given columns.
    • groupBy

      void groupBy(SQLBuffer sql)
      Add a GROUP BY clause.
    • groupBy

      void groupBy(SQLBuffer sql, Joins joins)
      Add a GROUP BY clause.
    • groupBy

      void groupBy(String sql)
      Add a GROUP BY clause.
    • groupBy

      void groupBy(String sql, Joins joins)
      Add a GROUP BY clause.
    • groupBy

      void groupBy(ClassMapping mapping, int subclasses, JDBCStore store, JDBCFetchConfiguration fetch)
      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

      SelectExecutor whereClone(int sels)
      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

      SelectExecutor fullClone(int sels)
      Return a SELECT that is a complete clone of this one.
      Parameters:
      sels - number of selects to UNION together; ignored if <= 1
    • eagerClone

      SelectExecutor eagerClone(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. 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 select
      eagerType - one of the EAGER_* constants
      toMany - whether the eager join is to-many
      sels - 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

      void append(SQLBuffer buf, Joins joins)
      Append the given joins to the given buffer.
    • and

      Joins and(Joins joins1, Joins joins2)
      AND the given joins together. The given joins will be hollowed in the process.
    • or

      Joins or(Joins joins1, Joins joins2)
      OR the given joins together. The common joins will be removed in the process.
    • outer

      Joins outer(Joins joins)
      Return a join set making the given joins outer joins.
    • toString

      String toString()
      Implement toString to generate SQL string for profiling/debuggging.
      Overrides:
      toString in class Object
    • getColumnAlias

      String getColumnAlias(Column col, Object path)
      Return the alias for the given column, without creating new table alias
    • setContext

      void setContext(Context context)
      Set JPQL query context for this select
      Parameters:
      context -
    • ctx

      Context ctx()
      Return the JPQL query context of this select
    • setSchemaAlias

      void setSchemaAlias(String schemaAlias)
      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

      void setTablePerClassMeta(ClassMapping meta)
      Set table-per-class metadata for polymorphic queries
    • getTablePerClassMeta

      ClassMapping getTablePerClassMeta()
      get table-per-class metadata for polymorphic queries
    • setJoinedTableClassMeta

      void setJoinedTableClassMeta(List meta)
      Set joined table metadatas for polymorphic queries
    • getJoinedTableClassMeta

      List getJoinedTableClassMeta()
      get joined table metadatas for polymorphic queries
    • setExcludedJoinedTableClassMeta

      void setExcludedJoinedTableClassMeta(List meta)
      Set joined table metadatas excluded for polymorphic queries
    • getExcludedJoinedTableClassMeta

      List getExcludedJoinedTableClassMeta()
      get joined table metadatas excluded for polymorphic queries
    • getDictionary

      DBDictionary getDictionary()