Package org.apache.cayenne.query

## Class RelationshipQuery

- java.lang.Object
- - org.apache.cayenne.query.IndirectQuery
  - - org.apache.cayenne.query.RelationshipQuery

- All Implemented Interfaces:
    `Serializable`, `Query`

      public class RelationshipQuery
      extends IndirectQuery

  A query that selects objects related to a given object via a mapped relationship. RelationshipQuery is used by Cayenne internally to resolve relationships, and is rarely executed by the application directly, although this of course is possible too.
  Since:
    1.2
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected ArcProperty` | `arc` |
    `protected QueryMetadata` | `metadata` |
    `protected EntityResolver` | `metadataResolver` |
    `protected ObjectId` | `objectId` |
    `protected boolean` | `refreshing` |
    `protected String` | `relationshipName` |
    `protected int` | `statementFetchSize` |

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

      `dataMap, lastResolver, name, replacementQuery`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `RelationshipQuery​(ObjectId objectID, String relationshipName)` | Creates a RelationshipQuery.
    `RelationshipQuery​(ObjectId objectID, String relationshipName, boolean refreshing)` | Creates a RelationshipQuery.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected Query` | `createReplacementQuery​(EntityResolver resolver)` | Creates a substitute query.
    `QueryMetadata` | `getMetaData​(EntityResolver resolver)` | Returns query metadata object.
    `ObjectId` | `getObjectId()` |
    `ObjRelationship` | `getRelationship​(EntityResolver resolver)` | Returns a non-null relationship object for this query.
    `String` | `getRelationshipName()` |
    `int` | `getStatementFetchSize()` |
    `boolean` | `isRefreshing()` |
    `void` | `setStatementFetchSize​(int size)` | Sets statement's fetch size (0 for no default size)
    `String` | `toString()` | Overrides toString() outputting a short string with query class and relationship name.

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

      `createSQLAction, getReplacementQuery, route`

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

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

- - ### Field Detail

    - #### objectId

          protected ObjectId objectId

    - #### relationshipName

          protected String relationshipName

    - #### refreshing

          protected boolean refreshing

    - #### statementFetchSize

          protected int statementFetchSize

    - #### metadataResolver

          protected transient EntityResolver metadataResolver

    - #### metadata

          protected transient QueryMetadata metadata

    - #### arc

          protected transient ArcProperty arc

  - ### Constructor Detail

    - #### RelationshipQuery

          public RelationshipQuery​(ObjectId objectID,
                                   String relationshipName)

      Creates a RelationshipQuery. Same as new RelationshipQuery(objectID, relationshipName, true).
      Parameters:
        `objectID` - ObjectId of a root object of the relationship.
        `relationshipName` - The name of the relationship.

    - #### RelationshipQuery

          public RelationshipQuery​(ObjectId objectID,
                                   String relationshipName,
                                   boolean refreshing)

      Creates a RelationshipQuery.
      Parameters:
        `objectID` - ObjectId of a root object of the relationship.
        `relationshipName` - The name of the relationship.
        `refreshing` - whether objects should be refreshed

  - ### Method Detail

    - #### getMetaData

          public QueryMetadata getMetaData​(EntityResolver resolver)

      Returns query metadata object.
      Specified by:
        `getMetaData` in interface `Query`
      Overrides:
        `getMetaData` in class `IndirectQuery`

    - #### getObjectId

          public ObjectId getObjectId()

    - #### isRefreshing

          public boolean isRefreshing()

    - #### getRelationshipName

          public String getRelationshipName()

    - #### createReplacementQuery

          protected Query createReplacementQuery​(EntityResolver resolver)

      Description copied from class: `IndirectQuery`
      Creates a substitute query. An implementor is free to provide an arbitrary replacement query.
      Specified by:
        `createReplacementQuery` in class `IndirectQuery`

    - #### getRelationship

          public ObjRelationship getRelationship​(EntityResolver resolver)

      Returns a non-null relationship object for this query.

    - #### setStatementFetchSize

          public void setStatementFetchSize​(int size)

      Sets statement's fetch size (0 for no default size)
      Since:
        3.0

    - #### getStatementFetchSize

          public int getStatementFetchSize()

      Returns:
        statement's fetch size
      Since:
        3.0

    - #### toString

          public String toString()

      Overrides toString() outputting a short string with query class and relationship name.
      Overrides:
        `toString` in class `Object`