org.eclipse.persistence.queries
Class ReadObjectQuery
java.lang.Object
org.eclipse.persistence.queries.DatabaseQuery
org.eclipse.persistence.queries.ReadQuery
org.eclipse.persistence.queries.ObjectBuildingQuery
org.eclipse.persistence.queries.ObjectLevelReadQuery
org.eclipse.persistence.queries.ReadObjectQuery
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable
public class ReadObjectQuery
- extends ObjectLevelReadQuery
Purpose:
Concrete class for all read queries involving a single object.
Responsibilities:
Return a single object for the query.
Implements the inheritance feature when dealing with abstract descriptors.
- See Also:
- Serialized Form
- Author:
- Yvon Lavoie
- Since:
- TOPLink/Java 1.0
Field Summary |
protected java.lang.Object |
selectionId
Key that can be used in place of a selection criteria. |
protected java.lang.Object |
selectionObject
Object that can be used in place of a selection criteria. |
protected boolean |
shouldLoadResultIntoSelectionObject
Can be used to refresh a specific non-cached instance from the database. |
Fields inherited from class org.eclipse.persistence.queries.ObjectLevelReadQuery |
additionalFields, batchFetchPolicy, cacheUsage, CheckCacheByExactPrimaryKey, CheckCacheByPrimaryKey, CheckCacheOnly, CheckCacheThenDatabase, concreteSubclassCalls, concreteSubclassJoinedMappingIndexes, ConformResultsInUnitOfWork, defaultBuilder, distinctState, DoNotCheckCache, DONT_USE_DISTINCT, entityFetchGroup, fetchGroup, fetchGroupName, inMemoryQueryIndirectionPolicy, isPrePrepared, isReadOnly, isReferenceClassLocked, isResultSetOptimizedQuery, joinedAttributeManager, loadGroup, lockModeType, NONE, nonFetchJoinAttributeExpressions, OPTIMISTIC, OPTIMISTIC_FORCE_INCREMENT, orderByExpressions, partialAttributeExpressions, PESSIMISTIC_, PESSIMISTIC_FORCE_INCREMENT, PESSIMISTIC_READ, PESSIMISTIC_WRITE, READ, shouldExtendPessimisticLockScope, shouldIncludeData, shouldOuterJoinSubclasses, shouldUseDefaultFetchGroup, UNCOMPUTED_DISTINCT, unionExpressions, USE_DISTINCT, UseDescriptorSetting, waitTimeout, WRITE |
Fields inherited from class org.eclipse.persistence.queries.ObjectBuildingQuery |
DEFAULT_LOCK_MODE, executionTime, isCacheCheckComplete, LOCK, LOCK_NOWAIT, LOCK_RESULT_PROPERTY, lockingClause, NO_LOCK, prefetchedCacheKeys, referenceClass, referenceClassName, requiresDeferredLocks, shouldBuildNullForNullPk, shouldRefreshIdentityMapResult, shouldRefreshRemoteIdentityMapResult, shouldRegisterResultsInUnitOfWork, shouldUseExclusiveConnection, wasDefaultLockMode |
Fields inherited from class org.eclipse.persistence.queries.DatabaseQuery |
accessors, allowNativeSQLQuery, argumentFields, arguments, argumentTypeNames, argumentTypes, argumentValues, BATCH_FETCH_PROPERTY, CascadeAggregateDelete, CascadeAllParts, CascadeByMapping, CascadeDependentParts, cascadePolicy, CascadePrivateParts, descriptor, doNotRedirect, executionSession, flushOnExecute, hintString, isCustomQueryUsed, isExecutionClone, isNativeConnectionRequired, isPrepared, isUserDefined, isUserDefinedSQLCall, monitorName, name, NoCascading, nullableArguments, parameterDelimiter, partitioningPolicy, properties, queryMechanism, queryTimeout, redirector, session, sessionName, shouldBindAllParameters, shouldCacheStatement, shouldCloneCall, shouldMaintainCache, shouldPrepare, shouldRetrieveBypassCache, shouldStoreBypassCache, shouldUseWrapperPolicy, shouldValidateUpdateCallCacheUse, sourceMapping, translationRow |
Constructor Summary |
ReadObjectQuery()
PUBLIC:
Return a new read object query. |
ReadObjectQuery(Call call)
PUBLIC:
Return a new read object query. |
ReadObjectQuery(java.lang.Class classToRead)
PUBLIC:
Return a new read object query. |
ReadObjectQuery(java.lang.Class classToRead,
Call call)
PUBLIC:
Return a new read object query. |
ReadObjectQuery(java.lang.Class classToRead,
Expression selectionCriteria)
PUBLIC:
Return a new read object query for the class and the selection criteria. |
ReadObjectQuery(java.lang.Class classToRead,
ExpressionBuilder builder)
PUBLIC:
Return a new read object query for the class. |
ReadObjectQuery(ExpressionBuilder builder)
PUBLIC:
The expression builder should be provide on creation to ensure only one is used. |
ReadObjectQuery(java.lang.Object objectToRead)
PUBLIC:
Return a query to read the object with the same primary key as the provided object. |
ReadObjectQuery(java.lang.Object exampleObject,
QueryByExamplePolicy policy)
PUBLIC:
Return a query by example query to find an object matching the attributes of the example object. |
Method Summary |
void |
cacheResult(java.lang.Object object)
INTERNAL:
This method is called by the object builder when building an original. |
void |
checkCacheByExactPrimaryKey()
PUBLIC:
The cache will be checked only if the query contains exactly the primary key. |
void |
checkCacheByPrimaryKey()
PUBLIC:
This is the default, the cache will be checked only if the query contains the primary key. |
void |
checkCacheThenDatabase()
PUBLIC:
The cache will be checked completely, then if the object is not found or the query too complex the database will be queried. |
void |
checkDescriptor(org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL:
Ensure that the descriptor has been set. |
protected java.lang.Object |
checkEarlyReturnLocal(org.eclipse.persistence.internal.sessions.AbstractSession session,
org.eclipse.persistence.internal.sessions.AbstractRecord translationRow)
INTERNAL:
The cache check is done before the prepare as a hit will not require the work to be done. |
protected DatabaseQuery |
checkForCustomQuery(org.eclipse.persistence.internal.sessions.AbstractSession session,
org.eclipse.persistence.internal.sessions.AbstractRecord translationRow)
INTERNAL:
Check to see if a custom query should be used for this query. |
protected java.lang.Object |
conformResult(java.lang.Object result,
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork,
org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow,
boolean buildDirectlyFromRows)
INTERNAL:
Conform the result in the UnitOfWork. |
void |
copyFromQuery(DatabaseQuery query)
INTERNAL:
Copy all setting from the query. |
void |
dontLoadResultIntoSelectionObject()
PUBLIC:
Do not refesh/load into the selection object, this is the default. |
java.lang.Object |
execute(org.eclipse.persistence.internal.sessions.AbstractSession session,
org.eclipse.persistence.internal.sessions.AbstractRecord row)
INTERNAL:
Execute the query. |
protected java.lang.Object |
executeObjectLevelReadQuery()
INTERNAL:
Execute the query. |
protected java.lang.Object |
executeObjectLevelReadQueryFromResultSet()
INTERNAL:
Execute the query building the objects directly from the database result-set. |
java.lang.Object |
extractRemoteResult(org.eclipse.persistence.internal.sessions.remote.Transporter transporter)
INTERNAL:
Extract the correct query result from the transporter. |
protected QueryRedirector |
getDefaultRedirector()
INTERNAL:
Returns the specific default redirector for this query type. |
protected java.lang.Object |
getQueryPrimaryKey()
INTERNAL:
Return the primary key stored in this query |
java.lang.Object |
getSelectionId()
PUBLIC:
Return Id of the object to be selected by the query. |
java.util.Vector |
getSelectionKey()
Deprecated. |
java.lang.Object |
getSelectionObject()
PUBLIC:
Return the selection object of the query. |
protected boolean |
hasNonDefaultFetchGroup()
INTERNAL:
Return if the query has an non-default fetch group defined for itself. |
boolean |
isPrimaryKeyQuery()
INTERNAL:
Return if the query is by primary key. |
boolean |
isReadObjectQuery()
PUBLIC:
Return if this is a read object query. |
void |
loadResultIntoSelectionObject()
PUBLIC:
Allow for the selection object of the query to be refreshed or put into the EclipseLink cache. |
protected void |
prepare()
INTERNAL:
Prepare the receiver for execution in a session. |
protected void |
prepareCustomQuery(DatabaseQuery customQuery)
INTERNAL:
Set the properties needed to be cascaded into the custom query including the translation row. |
void |
prepareForExecution()
INTERNAL:
Prepare the receiver for execution in a session. |
protected void |
prePrepare()
INTERNAL:
Prepare the receiver for execution in a session. |
java.lang.Object |
registerResultInUnitOfWork(java.lang.Object result,
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork,
org.eclipse.persistence.internal.sessions.AbstractRecord arguments,
boolean buildDirectlyFromRows)
INTERNAL:
All objects queried via a UnitOfWork get registered here. |
protected java.lang.Object |
remoteExecute()
|
java.util.Map |
replaceValueHoldersIn(java.lang.Object object,
org.eclipse.persistence.internal.sessions.remote.RemoteSessionController controller)
INTERNAL:
replace the value holders in the specified result object(s) |
void |
setSelectionId(java.lang.Object id)
PUBLIC:
The Id of the object to be selected by the query. |
void |
setSelectionKey(java.util.List selectionKey)
Deprecated. |
void |
setSelectionObject(java.lang.Object selectionObject)
PUBLIC:
Used to set the where clause of the query. |
void |
setShouldLoadResultIntoSelectionObject(boolean shouldLoadResultIntoSelectionObject)
PUBLIC:
Allow for the selection object of the query to be refreshed or put into the EclipseLink cache. |
void |
setSingletonSelectionKey(java.lang.Object selectionKey)
Deprecated. |
boolean |
shouldCheckCacheByExactPrimaryKey()
PUBLIC:
Return if cache should be checked. |
boolean |
shouldCheckCacheByPrimaryKey()
PUBLIC:
Return if cache should be checked. |
boolean |
shouldCheckCacheThenDatabase()
PUBLIC:
Return if cache should be checked. |
boolean |
shouldLoadResultIntoSelectionObject()
PUBLIC:
return true if the result should be loaded into the passed in selection Object |
Methods inherited from class org.eclipse.persistence.queries.ObjectLevelReadQuery |
acquireLocks, acquireLocksWithoutWaiting, addAdditionalField, addAdditionalField, addBatchReadAttribute, addBatchReadAttribute, addDescendingOrdering, addJoinedAttribute, addJoinedAttribute, addJoinSelectionFields, addNonFetchJoin, addNonFetchJoinedAttribute, addNonFetchJoinedAttribute, addOrdering, addPartialAttribute, addPartialAttribute, addSelectionFieldsForJoinedExpression, addUnionExpression, buildObject, changeDescriptor, checkCacheOnly, checkEarlyReturn, checkPrepare, checkPrePrepare, clone, computeBatchReadMappingQueries, computeNestedQueriesForBatchReadExpressions, conformIndividualResult, conformResultsInUnitOfWork, deepClone, dontAcquireLocks, dontCheckCache, dontRefreshIdentityMapResult, dontRefreshRemoteIdentityMapResult, dontUseDistinct, equals, except, executeDatabaseQuery, executeInUnitOfWork, extendPessimisticLockScope, getAdditionalFields, getAsOfClause, getBatchFetchPolicy, getBatchObjects, getBatchReadAttributeExpressions, getCacheUsage, getConcreteSubclassCalls, getConcreteSubclassJoinedMappingIndexes, getDistinctState, getEntityFetchGroup, getExampleObject, getExecutionFetchGroup, getExpressionBuilder, getFetchGroup, getFetchGroupName, getFetchGroupNonNestedFieldsSet, getFetchGroupNonNestedFieldsSet, getFetchGroupSelectionFields, getFetchGroupSelectionFields, getInMemoryQueryIndirectionPolicy, getInMemoryQueryIndirectionPolicyState, getJoinedAttributeExpressions, getJoinedAttributeManager, getLoadGroup, getLockingClause, getNonFetchJoinAttributeExpressions, getOrderByExpressions, getPartialAttributeExpressions, getPartialAttributeSelectionFields, getQueryByExamplePolicy, getReferenceClass, getReferenceClassName, getSelectionFields, getUnionExpressions, getWaitTimeout, hasAdditionalFields, hasAsOfClause, hasBatchReadAttributes, hasDefaultBuilder, hasExecutionFetchGroup, hasFetchGroup, hashCode, hasJoining, hasNonFetchJoinedAttributeExpressions, hasOrderByExpressions, hasPartialAttributeExpressions, hasUnionExpressions, initializeDefaultBuilder, intersect, isAttributeBatchRead, isClonePessimisticLocked, isDefaultLock, isDefaultPropertiesQuery, isDistinctComputed, isLockQuery, isLockQuery, isObjectLevelReadQuery, isPartialAttribute, isPrePrepared, isReadOnly, isReferenceClassLocked, isResultSetOptimizedQuery, prepareFetchGroup, prepareForRemoteExecution, prepareFromCachedQuery, prepareFromQuery, prepareOutsideUnitOfWork, prepareQuery, recordCloneForPessimisticLocking, refreshIdentityMapResult, refreshRemoteIdentityMapResult, resetDistinct, setAdditionalFields, setAsOfClause, setBatchFetchPolicy, setBatchFetchSize, setBatchFetchType, setBatchObjects, setBatchReadAttributeExpressions, setCacheUsage, setDescriptor, setDistinctState, setEJBQLString, setExampleObject, setExpressionBuilder, setFetchGroup, setFetchGroupName, setInMemoryQueryIndirectionPolicy, setInMemoryQueryIndirectionPolicyState, setIsPrepared, setIsPreparedKeepingSubclassData, setIsPrePrepared, setIsReadOnly, setIsResultSetOptimizedQuery, setJoinedAttributeExpressions, setJoinedAttributeManager, setLoadGroup, setLockingClause, setLockMode, setLockModeType, setNonFetchJoinAttributeExpressions, setOrderByExpressions, setPartialAttributeExpressions, setQueryByExamplePolicy, setReferenceClass, setReferenceClassName, setSelectionCriteria, setShouldExtendPessimisticLockScope, setShouldFilterDuplicates, setShouldIncludeData, setShouldOuterJoinSubclasses, setShouldUseDefaultFetchGroup, setUnionExpressions, setWaitTimeout, shouldCheckCache, shouldCheckCacheOnly, shouldCheckDescriptorForCacheUsage, shouldConformResultsInUnitOfWork, shouldDistinctBeUsed, shouldExtendPessimisticLockScope, shouldFilterDuplicates, shouldIncludeData, shouldOuterJoinSubclasses, shouldReadAllMappings, shouldReadMapping, shouldUseDefaultFetchGroup, toString, union, useDistinct |
Methods inherited from class org.eclipse.persistence.queries.ObjectBuildingQuery |
clonedQueryExecutionComplete, convertClassNamesToClasses, getDataResults, getExecutionTime, getLockMode, getPrefetchedCacheKeys, isAttributeJoined, isCacheCheckComplete, isObjectBuildingQuery, isRegisteringResults, postRegisterIndividualResult, registerIndividualResult, requiresDeferredLocks, setExecutionTime, setPrefetchedCacheKeys, setRequiresDeferredLocks, setShouldBuildNullForNullPk, setShouldRefreshIdentityMapResult, setShouldRefreshRemoteIdentityMapResult, setShouldRegisterResultsInUnitOfWork, setShouldUseExclusiveConnection, setWasDefaultLockMode, shouldBuildNullForNullPk, shouldRefreshIdentityMapResult, shouldRefreshRemoteIdentityMapResult, shouldRegisterResultsInUnitOfWork, shouldUseExclusiveConnection, wasDefaultLockMode |
Methods inherited from class org.eclipse.persistence.queries.ReadQuery |
cacheQueryResults, clearQueryResults, doNotCacheQueryResults, getFetchSize, getFirstResult, getMaxRows, getQueryId, getQueryResults, getQueryResults, getQueryResults, getQueryResultsCachePolicy, getTemporaryCachedQueryResults, isReadQuery, remoteExecute, setFetchSize, setFirstResult, setMaxRows, setQueryId, setQueryResults, setQueryResultsCachePolicy, setTemporaryCachedQueryResults, shouldCacheQueryResults |
Methods inherited from class org.eclipse.persistence.queries.DatabaseQuery |
addArgument, addArgument, addArgument, addArgument, addArgumentByTypeName, addArgumentValue, addArgumentValues, addCall, addStatement, bindAllParameters, buildArgumentFields, buildSelectionCriteria, cacheStatement, cascadeAllParts, cascadeByMapping, cascadeOnlyDependentParts, cascadePrivateParts, checkPrepare, dontBindAllParameters, dontCacheStatement, dontCascadeParts, dontMaintainCache, getAccessor, getAccessors, getArguments, getArgumentTypeNames, getArgumentTypes, getArgumentValues, getCall, getCascadePolicy, getDatasourceCall, getDatasourceCalls, getDescriptor, getDomainClassNounName, getDoNotRedirect, getEJBQLString, getExecutionSession, getFlushOnExecute, getHintString, getJPQLString, getMonitorName, getName, getNullableArguments, getParameterDelimiter, getParameterDelimiterChar, getPartitioningPolicy, getProperties, getProperty, getQueryMechanism, getQueryNounName, getQueryTimeout, getRedirector, getRedirectorForQuery, getSelectionCriteria, getSensorName, getSession, getSessionName, getShouldBindAllParameters, getSourceMapping, getSQLStatement, getSQLString, getSQLStrings, getTranslatedSQLString, getTranslatedSQLStrings, getTranslationRow, hasAccessor, hasArguments, hasNullableArguments, hasProperties, hasQueryMechanism, hasSessionName, ignoreBindAllParameters, ignoreCacheStatement, isCallQuery, isCascadeOfAggregateDelete, isCustomQueryUsed, isCustomSelectionQuery, isDataModifyQuery, isDataReadQuery, isDeleteAllQuery, isDeleteObjectQuery, isDirectReadQuery, isExecutionClone, isExpressionQuery, isInsertObjectQuery, isJPQLCallQuery, isModifyAllQuery, isModifyQuery, isNativeConnectionRequired, isObjectLevelModifyQuery, isPrepared, isReadAllQuery, isReportQuery, isSQLCallQuery, isUpdateAllQuery, isUpdateObjectQuery, isUserDefined, isUserDefinedSQLCall, isValueReadQuery, isWriteObjectQuery, maintainCache, prepareCall, redirectQuery, removeProperty, resetMonitorName, retrieveBypassCache, rowFromArguments, setAccessor, setAccessors, setAllowNativeSQLQuery, setArguments, setArgumentTypeNames, setArgumentTypes, setArgumentValues, setCall, setCascadePolicy, setDatasourceCall, setDoNotRedirect, setExecutionSession, setFlushOnExecute, setHintString, setIsCustomQueryUsed, setIsExecutionClone, setIsNativeConnectionRequired, setIsUserDefined, setIsUserDefinedSQLCall, setJPQLString, setName, setNullableArguments, setParameterDelimiter, setPartitioningPolicy, setProperties, setProperty, setQueryMechanism, setQueryTimeout, setRedirector, setSession, setSessionName, setShouldBindAllParameters, setShouldBindAllParameters, setShouldCacheStatement, setShouldMaintainCache, setShouldPrepare, setShouldRetrieveBypassCache, setShouldStoreBypassCache, setShouldUseWrapperPolicy, setShouldValidateUpdateCallCacheUse, setSourceMapping, setSQLStatement, setSQLString, setTranslationRow, shouldAllowNativeSQLQuery, shouldBindAllParameters, shouldCacheStatement, shouldCascadeAllParts, shouldCascadeByMapping, shouldCascadeOnlyDependentParts, shouldCascadeParts, shouldCascadePrivateParts, shouldCloneCall, shouldIgnoreBindAllParameters, shouldIgnoreCacheStatement, shouldMaintainCache, shouldPrepare, shouldPrepare, shouldRetrieveBypassCache, shouldStoreBypassCache, shouldUseWrapperPolicy, shouldValidateUpdateCallCacheUse, storeBypassCache |
Methods inherited from class java.lang.Object |
finalize, getClass, notify, notifyAll, wait, wait, wait |
selectionObject
protected transient java.lang.Object selectionObject
- Object that can be used in place of a selection criteria.
selectionId
protected java.lang.Object selectionId
- Key that can be used in place of a selection criteria.
shouldLoadResultIntoSelectionObject
protected boolean shouldLoadResultIntoSelectionObject
- Can be used to refresh a specific non-cached instance from the database.
ReadObjectQuery
public ReadObjectQuery()
- PUBLIC:
Return a new read object query.
A reference class must be specified before execution.
It is better to provide the class and expression builder on construction to esnure a single expression builder is used.
If no selection criteria is specified this will reads the first object found in the database.
ReadObjectQuery
public ReadObjectQuery(java.lang.Class classToRead)
- PUBLIC:
Return a new read object query.
By default, the query has no selection criteria. Executing this query without
selection criteria will always result in a database access to read the first
instance of the specified Class found in the database. This is true no
matter how cache usage is configured and even if an instance of the
specified Class exists in the cache.
Executing a query with selection criteria allows you to avoid a database
access if the selected instance is in the cache. For this reason, you may whish to use a ReadObjectQuery constructor that takes selection criteria, such as:
ReadObjectQuery(Class, Call)
, ReadObjectQuery(Class, Expression)
, ReadObjectQuery(Class, ExpressionBuilder)
, ReadObjectQuery(ExpressionBuilder)
, ReadObjectQuery(Object)
, or ReadObjectQuery(Object, QueryByExamplePolicy)
.
ReadObjectQuery
public ReadObjectQuery(java.lang.Class classToRead,
Expression selectionCriteria)
- PUBLIC:
Return a new read object query for the class and the selection criteria.
ReadObjectQuery
public ReadObjectQuery(java.lang.Class classToRead,
ExpressionBuilder builder)
- PUBLIC:
Return a new read object query for the class.
The expression builder must be used for all associated expressions used with the query.
ReadObjectQuery
public ReadObjectQuery(java.lang.Class classToRead,
Call call)
- PUBLIC:
Return a new read object query.
The call represents a database interaction such as SQL, Stored Procedure.
ReadObjectQuery
public ReadObjectQuery(Call call)
- PUBLIC:
Return a new read object query.
The call represents a database interaction such as SQL, Stored Procedure.
ReadObjectQuery
public ReadObjectQuery(java.lang.Object objectToRead)
- PUBLIC:
Return a query to read the object with the same primary key as the provided object.
Note: This is not a query by example object, only the primary key will be used for the selection criteria.
ReadObjectQuery
public ReadObjectQuery(java.lang.Object exampleObject,
QueryByExamplePolicy policy)
- PUBLIC:
Return a query by example query to find an object matching the attributes of the example object.
ReadObjectQuery
public ReadObjectQuery(ExpressionBuilder builder)
- PUBLIC:
The expression builder should be provide on creation to ensure only one is used.
cacheResult
public void cacheResult(java.lang.Object object)
- INTERNAL:
This method is called by the object builder when building an original.
It will cause the original to be cached in the query results if the query
is set to do so.
- Specified by:
cacheResult
in class ReadQuery
checkCacheByExactPrimaryKey
public void checkCacheByExactPrimaryKey()
- PUBLIC:
The cache will be checked only if the query contains exactly the primary key.
Queries can be configured to use the cache at several levels.
Other caching option are available.
- See Also:
ObjectLevelReadQuery.setCacheUsage(int)
checkCacheByPrimaryKey
public void checkCacheByPrimaryKey()
- PUBLIC:
This is the default, the cache will be checked only if the query contains the primary key.
Queries can be configured to use the cache at several levels.
Other caching option are available.
- See Also:
ObjectLevelReadQuery.setCacheUsage(int)
checkCacheThenDatabase
public void checkCacheThenDatabase()
- PUBLIC:
The cache will be checked completely, then if the object is not found or the query too complex the database will be queried.
Queries can be configured to use the cache at several levels.
Other caching option are available.
- See Also:
ObjectLevelReadQuery.setCacheUsage(int)
checkDescriptor
public void checkDescriptor(org.eclipse.persistence.internal.sessions.AbstractSession session)
throws QueryException
- INTERNAL:
Ensure that the descriptor has been set.
- Overrides:
checkDescriptor
in class ObjectLevelReadQuery
- Throws:
QueryException
checkEarlyReturnLocal
protected java.lang.Object checkEarlyReturnLocal(org.eclipse.persistence.internal.sessions.AbstractSession session,
org.eclipse.persistence.internal.sessions.AbstractRecord translationRow)
- INTERNAL:
The cache check is done before the prepare as a hit will not require the work to be done.
- Specified by:
checkEarlyReturnLocal
in class ObjectLevelReadQuery
checkForCustomQuery
protected DatabaseQuery checkForCustomQuery(org.eclipse.persistence.internal.sessions.AbstractSession session,
org.eclipse.persistence.internal.sessions.AbstractRecord translationRow)
- INTERNAL:
Check to see if a custom query should be used for this query.
This is done before the query is copied and prepared/executed.
null means there is none.
- Overrides:
checkForCustomQuery
in class DatabaseQuery
conformResult
protected java.lang.Object conformResult(java.lang.Object result,
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork,
org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow,
boolean buildDirectlyFromRows)
- INTERNAL:
Conform the result in the UnitOfWork.
dontLoadResultIntoSelectionObject
public void dontLoadResultIntoSelectionObject()
- PUBLIC:
Do not refesh/load into the selection object, this is the default.
This property allows for the selection object of the query to be refreshed or put into the TopLink cache.
By default on a read or refresh the object in the cache is refreshed and returned or a new object is built from the database,
in some cases such as EJB BMP it is desirable to refresh or load into the object passed into the read object query.
Note: This forces the selection object into the cache a replaces any existing object that may already be there,
this is a strict violation of object identity and other objects can still be refering to the old object.
execute
public java.lang.Object execute(org.eclipse.persistence.internal.sessions.AbstractSession session,
org.eclipse.persistence.internal.sessions.AbstractRecord row)
throws DatabaseException
- INTERNAL:
Execute the query. If there are cached results return those.
This must override the super to support result caching.
- Overrides:
execute
in class ObjectLevelReadQuery
- Parameters:
session
- the session in which the receiver will be executed.
- Returns:
- An object or vector, the result of executing the query.
- Throws:
DatabaseException
- - an error has occurred on the database
executeObjectLevelReadQuery
protected java.lang.Object executeObjectLevelReadQuery()
throws DatabaseException
- INTERNAL:
Execute the query.
Do a cache lookup and build object from row if required.
- Specified by:
executeObjectLevelReadQuery
in class ObjectLevelReadQuery
- Returns:
- object - the first object found or null if none.
- Throws:
DatabaseException
- - an error has occurred on the database
executeObjectLevelReadQueryFromResultSet
protected java.lang.Object executeObjectLevelReadQueryFromResultSet()
throws DatabaseException
- INTERNAL:
Execute the query building the objects directly from the database result-set.
- Specified by:
executeObjectLevelReadQueryFromResultSet
in class ObjectLevelReadQuery
- Returns:
- object - the first object found or null if none.
- Throws:
DatabaseException
- - an error has occurred on the database
extractRemoteResult
public java.lang.Object extractRemoteResult(org.eclipse.persistence.internal.sessions.remote.Transporter transporter)
- INTERNAL:
Extract the correct query result from the transporter.
- Overrides:
extractRemoteResult
in class DatabaseQuery
getDefaultRedirector
protected QueryRedirector getDefaultRedirector()
- INTERNAL:
Returns the specific default redirector for this query type. There are numerous default query redirectors.
See ClassDescriptor for their types.
- Overrides:
getDefaultRedirector
in class DatabaseQuery
getSelectionKey
@Deprecated
public java.util.Vector getSelectionKey()
- Deprecated.
- PUBLIC:
The primary key can be specified if used instead of an expression or selection object.
If composite the primary must be in the same order as defined in the descriptor.
- See Also:
getSelectionId()
getSelectionObject
public java.lang.Object getSelectionObject()
- PUBLIC:
Return the selection object of the query.
This can be used instead of a where clause expression for single object primary key queries.
The selection object given should have a primary key defined,
this primary key will be used to query the database instance of the same object.
This is a basic form of query by example where only the primary key is required,
it can be used for simple query forms, or testing.
isReadObjectQuery
public boolean isReadObjectQuery()
- PUBLIC:
Return if this is a read object query.
- Overrides:
isReadObjectQuery
in class DatabaseQuery
isPrimaryKeyQuery
public boolean isPrimaryKeyQuery()
- INTERNAL:
Return if the query is by primary key.
- Overrides:
isPrimaryKeyQuery
in class ObjectLevelReadQuery
loadResultIntoSelectionObject
public void loadResultIntoSelectionObject()
- PUBLIC:
Allow for the selection object of the query to be refreshed or put into the EclipseLink cache.
By default on a read or refresh the object in the cache is refreshed and returned or a new object is built from the database,
in some cases such as EJB BMP it is desirable to refresh or load into the object passed into the read object query.
Note: This forces the selection object into the cache a replaces any existing object that may already be there,
this is a strict violation of object identity and other objects can still be referring to the old object.
copyFromQuery
public void copyFromQuery(DatabaseQuery query)
- INTERNAL:
Copy all setting from the query.
This is used to morph queries from one type to the other.
By default this calls prepareFromQuery, but additional properties may be required
to be copied as prepareFromQuery only copies properties that affect the SQL.
- Overrides:
copyFromQuery
in class ObjectLevelReadQuery
prepare
protected void prepare()
throws QueryException
- INTERNAL:
Prepare the receiver for execution in a session.
- Overrides:
prepare
in class ObjectLevelReadQuery
- Throws:
QueryException
prepareCustomQuery
protected void prepareCustomQuery(DatabaseQuery customQuery)
- INTERNAL:
Set the properties needed to be cascaded into the custom query including the translation row.
This is used only for primary key queries, as the descriptor query manager
stores a predefined query for this query to avoid having to re-prepare and allow for customization.
- Overrides:
prepareCustomQuery
in class ObjectBuildingQuery
prepareForExecution
public void prepareForExecution()
throws QueryException
- INTERNAL:
Prepare the receiver for execution in a session.
- Overrides:
prepareForExecution
in class ReadQuery
- Throws:
QueryException
prePrepare
protected void prePrepare()
throws QueryException
- INTERNAL:
Prepare the receiver for execution in a session.
- Overrides:
prePrepare
in class ObjectLevelReadQuery
- Throws:
QueryException
registerResultInUnitOfWork
public java.lang.Object registerResultInUnitOfWork(java.lang.Object result,
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl unitOfWork,
org.eclipse.persistence.internal.sessions.AbstractRecord arguments,
boolean buildDirectlyFromRows)
- INTERNAL:
All objects queried via a UnitOfWork get registered here. If the query
went to the database.
Involves registering the query result individually and in totality, and
hence refreshing / conforming is done here.
- Specified by:
registerResultInUnitOfWork
in class ObjectLevelReadQuery
- Parameters:
result
- may be collection (read all) or an object (read one),
or even a cursor. If in transaction the shared cache will
be bypassed, meaning the result may not be originals from the parent
but raw database rows.unitOfWork
- the unitOfWork the result is being registered in.arguments
- the original arguments/parameters passed to the query
execution. Used by conformingbuildDirectlyFromRows
- If in transaction must construct
a registered result from raw database rows.
- Returns:
- the final (conformed, refreshed, wrapped) UnitOfWork query result
remoteExecute
protected java.lang.Object remoteExecute()
- Overrides:
remoteExecute
in class DatabaseQuery
replaceValueHoldersIn
public java.util.Map replaceValueHoldersIn(java.lang.Object object,
org.eclipse.persistence.internal.sessions.remote.RemoteSessionController controller)
- INTERNAL:
replace the value holders in the specified result object(s)
- Overrides:
replaceValueHoldersIn
in class DatabaseQuery
getQueryPrimaryKey
protected java.lang.Object getQueryPrimaryKey()
- INTERNAL:
Return the primary key stored in this query
- Overrides:
getQueryPrimaryKey
in class ObjectBuildingQuery
- Returns:
- the selection id of this ReadObjectQuery
- See Also:
ReadObjectQuery
getSelectionId
public java.lang.Object getSelectionId()
- PUBLIC:
Return Id of the object to be selected by the query.
setSelectionId
public void setSelectionId(java.lang.Object id)
- PUBLIC:
The Id of the object to be selected by the query.
This will generate a query by primary key.
This can be used instead of an Expression, SQL, or JPQL, or example object.
The Id is the Id value for a singleton primary key,
for a composite it is an instance of CacheId.
- See Also:
CacheId
setSelectionKey
@Deprecated
public void setSelectionKey(java.util.List selectionKey)
- Deprecated.
- PUBLIC:
The primary key can be specified if used instead of an expression or selection object.
If composite the primary must be in the same order as defined in the descriptor.
- See Also:
setSelectionId(Object)
setSelectionObject
public void setSelectionObject(java.lang.Object selectionObject)
- PUBLIC:
Used to set the where clause of the query.
This can be used instead of a where clause expression for single object primary key queries.
The selection object given should have a primary key defined,
this primary key will be used to query the database instance of the same object.
This is a basic form of query by example where only the primary key is required,
it can be used for simple query forms, or testing.
setShouldLoadResultIntoSelectionObject
public void setShouldLoadResultIntoSelectionObject(boolean shouldLoadResultIntoSelectionObject)
- PUBLIC:
Allow for the selection object of the query to be refreshed or put into the EclipseLink cache.
By default on a read or refresh the object in the cache is refreshed and returned or a new object is built from the database,
in some cases such as EJB BMP it is desirable to refresh or load into the object passed into the read object query.
Note: This forces the selection object into the cache a replaces any existing object that may already be there,
this is a strict violation of object identity and other objects can still be referring to the old object.
setSingletonSelectionKey
@Deprecated
public void setSingletonSelectionKey(java.lang.Object selectionKey)
- Deprecated.
- PUBLIC:
The primary key can be specified if used instead of an expression or selection object.
- See Also:
setSelectionId(Object)
shouldCheckCacheByExactPrimaryKey
public boolean shouldCheckCacheByExactPrimaryKey()
- PUBLIC:
Return if cache should be checked.
shouldCheckCacheByPrimaryKey
public boolean shouldCheckCacheByPrimaryKey()
- PUBLIC:
Return if cache should be checked.
shouldCheckCacheThenDatabase
public boolean shouldCheckCacheThenDatabase()
- PUBLIC:
Return if cache should be checked.
shouldLoadResultIntoSelectionObject
public boolean shouldLoadResultIntoSelectionObject()
- PUBLIC:
return true if the result should be loaded into the passed in selection Object
hasNonDefaultFetchGroup
protected boolean hasNonDefaultFetchGroup()
- INTERNAL:
Return if the query has an non-default fetch group defined for itself.