Package org.apache.cayenne.query

## Class PrefetchSelectQuery<T>

- java.lang.Object
- - org.apache.cayenne.query.CacheableQuery
  - - org.apache.cayenne.query.AbstractQuery
    - - org.apache.cayenne.query.FluentSelect<T>
      - - org.apache.cayenne.query.ObjectSelect<T>
        - - org.apache.cayenne.query.PrefetchSelectQuery<T>

- All Implemented Interfaces:
    `Serializable`, `ParameterizedQuery`, `Query`, `Select<T>`

      public class PrefetchSelectQuery<T>
      extends ObjectSelect<T>

  A SelectQuery to perform a prefetch based on another query. Used internally by Cayenne and is normally never used directly.
  Since:
    4.2 this query extends `ObjectSelect` as part of the deprecation of the `SelectQuery`
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected ObjRelationship` | `lastPrefetchHint` | Stores the last ObjRelationship in the prefetch path.
    `protected String` | `prefetchPath` | The relationship path from root objects to the objects being prefetched.
    `protected Collection<String>` | `resultPaths` |

    - ### Fields inherited from class org.apache.cayenne.query.ObjectSelect

      `metaData`

    - ### Fields inherited from class org.apache.cayenne.query.FluentSelect

      `dbEntityName, entityName, entityType, having, orderings, where`

    - ### Fields inherited from class org.apache.cayenne.query.AbstractQuery

      `root`

    - ### Fields inherited from class org.apache.cayenne.query.CacheableQuery

      `logger`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `PrefetchSelectQuery​(String prefetchPath, ObjRelationship lastPrefetchHint)` | Creates a new disjoint prefetch select query.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addResultPath​(String path)` | Configures an "extra" path that will resolve to an extra column (or columns) in the result set.
    `ObjRelationship` | `getLastPrefetchHint()` | Returns last incoming ObjRelationship in the prefetch relationship chain.
    `String` | `getPrefetchPath()` | Returns the prefetchPath.
    `Collection<String>` | `getResultPaths()` | Returns extra result paths.
    `void` | `removeResultPath​(String path)` | Removes an extra result path.
    `protected void` | `routePrefetches​(QueryRouter router, EntityResolver resolver)` |
    `void` | `setLastPrefetchHint​(ObjRelationship relationship)` |
    `void` | `setPrefetchPath​(String prefetchPath)` | Sets the prefetchPath.
    `void` | `setPrefetchTree​(PrefetchTreeNode prefetch)` | Clean set of the prefetch tree without any merge with existing nodes.

    - ### Methods inherited from class org.apache.cayenne.query.ObjectSelect

      `and, and, avg, avg, cacheGroup, cacheStrategy, cacheStrategy, column, columnQuery, columnQuery, columns, count, count, createQuery, dataRowQuery, dataRowQuery, dbEntityName, dbQuery, dbQuery, distinct, entityName, entityType, fetchDataRows, getBaseMetaData, getMetaData, having, having, isFetchingDataRows, limit, localCache, localCache, max, max, min, min, offset, or, or, orderBy, orderBy, orderBy, orderBy, pageSize, prefetch, prefetch, query, query, query, query, queryTimeout, selectCount, selectFirst, sharedCache, sharedCache, statementFetchSize, sum, sum, where, where`

    - ### Methods inherited from class org.apache.cayenne.query.FluentSelect

      `batchIterator, createSQLAction, getColumns, getDbEntityName, getEntityName, getEntityType, getHaving, getLimit, getOffset, getOrderings, getPageSize, getPrefetches, getQueryTimeout, getStatementFetchSize, getWhere, initWithProperties, isDistinct, iterate, iterator, resolveRoot, route, select, selectOne`

    - ### Methods inherited from class org.apache.cayenne.query.AbstractQuery

      `getRoot, setRoot, toString`

    - ### Methods inherited from class org.apache.cayenne.query.CacheableQuery

      `getCacheGroup, getCacheStrategy, setCacheGroup, setCacheStrategy, useLocalCache, useLocalCache, useSharedCache, useSharedCache`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface org.apache.cayenne.query.Query

      `createSQLAction, route`

- - ### Field Detail

    - #### prefetchPath

          protected String prefetchPath

      The relationship path from root objects to the objects being prefetched.

    - #### lastPrefetchHint

          protected ObjRelationship lastPrefetchHint

      Stores the last ObjRelationship in the prefetch path.

    - #### resultPaths

          protected Collection<String> resultPaths

  - ### Constructor Detail

    - #### PrefetchSelectQuery

          public PrefetchSelectQuery​(String prefetchPath,
                                     ObjRelationship lastPrefetchHint)

      Creates a new disjoint prefetch select query.
      Since:
        3.1

  - ### Method Detail

    - #### routePrefetches

          protected void routePrefetches​(QueryRouter router,
                                         EntityResolver resolver)

      Overrides:
        `routePrefetches` in class `FluentSelect<T>`

    - #### getPrefetchPath

          public String getPrefetchPath()

      Returns the prefetchPath.

    - #### setPrefetchPath

          public void setPrefetchPath​(String prefetchPath)

      Sets the prefetchPath.
      Parameters:
        `prefetchPath` - The prefetchPath to set

    - #### setPrefetchTree

          public void setPrefetchTree​(PrefetchTreeNode prefetch)

      Clean set of the prefetch tree without any merge with existing nodes.
      Parameters:
        `prefetch` - prefetch tree
      Since:
        4.2

    - #### getLastPrefetchHint

          public ObjRelationship getLastPrefetchHint()

      Returns last incoming ObjRelationship in the prefetch relationship chain.
      Since:
        1.1

    - #### setLastPrefetchHint

          public void setLastPrefetchHint​(ObjRelationship relationship)

      Since:
        1.1

    - #### addResultPath

          public void addResultPath​(String path)

      Configures an "extra" path that will resolve to an extra column (or columns) in the result set.
      Parameters:
        `path` - A valid path expression. E.g. "abc" or "db:ABC" or "abc.xyz".
      Since:
        1.2

    - #### removeResultPath

          public void removeResultPath​(String path)

      Removes an extra result path. Note that this method doesn't check for expression invariants, as it doesn't have a proper context to do so. E.g. for the purpose of this method "db:ARTIST_NAME" and "obj:artistName" are not the same, though both will resolve to the same column name.

    - #### getResultPaths

          public Collection<String> getResultPaths()

      Returns extra result paths.
      Since:
        1.2