Class FetchRequest
java.lang.Object
org.datanucleus.store.rdbms.request.Request
org.datanucleus.store.rdbms.request.FetchRequest
Class to retrieve the fields of an object of a specified class from the datastore.
If some of those fields are themselves persistent objects then this can optionally
retrieve fields of those objects in the same fetch.
Any surrogate version stored in this table will be fetched *if* the object being updated doesn't already have a value for it. If the caller wants the surrogate version to be updated then they should nullify the "transactional" version before calling.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate boolean
Whether we are fetching a surrogate version in this fetch.private final String
Convenience string listing the fields to be fetched by this request.private final List
<MappingCallbacks> Callbacks for postFetch() operations, to be called after the fetch itself (relation fields).private StatementClassMapping
The mapping of the results of the SQL statement.private int[]
Absolute numbers of the fields/properties of the class to fetch.private int[]
Absolute numbers of the members of the class to store the value for.private int
private String
JDBC fetch statement with locking.private String
JDBC fetch statement without locking.private String
Name of the version field. -
Constructor Summary
ConstructorsConstructorDescriptionFetchRequest
(DatastoreClass classTable, org.datanucleus.FetchPlanForClass fpClass, org.datanucleus.ClassLoaderResolver clr, org.datanucleus.metadata.AbstractClassMetaData cmd, org.datanucleus.metadata.AbstractMemberMetaData[] mmds, org.datanucleus.metadata.AbstractMemberMetaData[] mmdsToStore) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionvoid
execute
(org.datanucleus.state.DNStateManager sm) Method to execute the request - to be implemented by deriving classes.protected int
processMembersOfClass
(SelectStatement sqlStatement, org.datanucleus.FetchPlanForClass fpClass, org.datanucleus.metadata.AbstractMemberMetaData[] mmds, org.datanucleus.metadata.AbstractMemberMetaData[] mmdsToStore, DatastoreClass table, SQLTable sqlTbl, StatementClassMapping mappingDef, Collection<MappingCallbacks> fetchCallbacks, org.datanucleus.ClassLoaderResolver clr, List<Integer> memberNumbersToStore) Method to process the supplied members of the class, adding to the SQLStatement as required.(package private) boolean
processMemberToFetch
(org.datanucleus.metadata.AbstractMemberMetaData mmd, org.datanucleus.FetchPlanForClass fpClass, org.datanucleus.ClassLoaderResolver clr, Collection<MappingCallbacks> fetchCallbacks, SelectStatement sqlStmt, SQLTable sqlTbl, StatementClassMapping mappingDef, List<Integer> memberNumbersToStore) Method to process the specified member.(package private) boolean
processMemberToStore
(org.datanucleus.metadata.AbstractMemberMetaData mmd, org.datanucleus.FetchPlanForClass fpClass, org.datanucleus.ClassLoaderResolver clr, Collection<MappingCallbacks> fetchCallbacks, SelectStatement sqlStmt, SQLTable sqlTbl, StatementClassMapping mappingDef, List<Integer> memberNumbersToStore) Method to process the specified member.
-
Field Details
-
statementUnlocked
JDBC fetch statement without locking. -
statementLocked
JDBC fetch statement with locking. -
memberNumbersToFetch
private int[] memberNumbersToFetchAbsolute numbers of the fields/properties of the class to fetch. -
memberNumbersToStore
private int[] memberNumbersToStoreAbsolute numbers of the members of the class to store the value for. -
mappingDefinition
The mapping of the results of the SQL statement. -
mappingCallbacks
Callbacks for postFetch() operations, to be called after the fetch itself (relation fields). -
numberOfFieldsToFetch
private int numberOfFieldsToFetch -
fieldsToFetch
Convenience string listing the fields to be fetched by this request. -
fetchingSurrogateVersion
private boolean fetchingSurrogateVersionWhether we are fetching a surrogate version in this fetch. -
versionFieldName
Name of the version field. Only applies if the class has a version field (not surrogate).
-
-
Constructor Details
-
FetchRequest
public FetchRequest(DatastoreClass classTable, org.datanucleus.FetchPlanForClass fpClass, org.datanucleus.ClassLoaderResolver clr, org.datanucleus.metadata.AbstractClassMetaData cmd, org.datanucleus.metadata.AbstractMemberMetaData[] mmds, org.datanucleus.metadata.AbstractMemberMetaData[] mmdsToStore) Constructor. Uses the structure of the datastore table to build a basic SELECT query.- Parameters:
classTable
- The Class Table representing the datastore table to retrievefpClass
- FetchPlan for classclr
- ClassLoader resolvercmd
- ClassMetaData of the candidatemmds
- MetaData of the members to fetchmmdsToStore
- MetaData of the members to store
-
-
Method Details
-
execute
public void execute(org.datanucleus.state.DNStateManager sm) Description copied from class:Request
Method to execute the request - to be implemented by deriving classes. -
processMembersOfClass
protected int processMembersOfClass(SelectStatement sqlStatement, org.datanucleus.FetchPlanForClass fpClass, org.datanucleus.metadata.AbstractMemberMetaData[] mmds, org.datanucleus.metadata.AbstractMemberMetaData[] mmdsToStore, DatastoreClass table, SQLTable sqlTbl, StatementClassMapping mappingDef, Collection<MappingCallbacks> fetchCallbacks, org.datanucleus.ClassLoaderResolver clr, List<Integer> memberNumbersToStore) Method to process the supplied members of the class, adding to the SQLStatement as required. Can recurse if some of the requested fields are persistent objects in their own right, so we take the opportunity to retrieve some of their fields.- Parameters:
sqlStatement
- Statement being builtfpClass
- FetchPlan for classmmds
- MetaData for the members to fetchmmdsToStore
- MetaData for the members to storetable
- The table to look for member mappingssqlTbl
- The table in the SQL statement to use for selectsmappingDef
- Mapping definition for the resultfetchCallbacks
- Any additional required callbacks are added hereclr
- ClassLoader resolvermemberNumbersToStore
- Numbers of the members that need storing (populated by this call)- Returns:
- Number of members being selected in the statement
-
processMemberToFetch
boolean processMemberToFetch(org.datanucleus.metadata.AbstractMemberMetaData mmd, org.datanucleus.FetchPlanForClass fpClass, org.datanucleus.ClassLoaderResolver clr, Collection<MappingCallbacks> fetchCallbacks, SelectStatement sqlStmt, SQLTable sqlTbl, StatementClassMapping mappingDef, List<Integer> memberNumbersToStore) Method to process the specified member.- Parameters:
mmd
- MetaData for the memberfpClass
- FetchPlan for classclr
- ClassLoader resolverfetchCallbacks
- Any fetch callbacks to register the mapping withsqlStmt
- The SELECT statementsqlTbl
- The SQL table (of the candidate)mappingDef
- The mapping definition for this statementmemberNumbersToStore
- List of member numbers that are approved to be stored (any fetched ones will be added if recursionDepth=0)store
- Whether we are just selecting the value of this member for storing (rather than fetching)- Returns:
- Whether this member is selected in the statement
-
processMemberToStore
boolean processMemberToStore(org.datanucleus.metadata.AbstractMemberMetaData mmd, org.datanucleus.FetchPlanForClass fpClass, org.datanucleus.ClassLoaderResolver clr, Collection<MappingCallbacks> fetchCallbacks, SelectStatement sqlStmt, SQLTable sqlTbl, StatementClassMapping mappingDef, List<Integer> memberNumbersToStore) Method to process the specified member.- Parameters:
mmd
- MetaData for the memberfpClass
- FetchPlan for classclr
- ClassLoader resolverfetchCallbacks
- Any fetch callbacks to register the mapping withsqlStmt
- The SELECT statementsqlTbl
- The SQL table (of the candidate)mappingDef
- The mapping definition for this statementmemberNumbersToStore
- List of member numbers that are approved to be stored- Returns:
- Whether this member is selected in the statement
-