Package org.datanucleus.store.query
Class AbstractJPQLQuery
java.lang.Object
org.datanucleus.store.query.Query
org.datanucleus.store.query.AbstractJavaQuery
org.datanucleus.store.query.AbstractJPQLQuery
- All Implemented Interfaces:
Serializable
,ExecutionContextListener
Abstract representation of a JPQL query used by DataNucleus.
The query can be specified via method calls, or via a single-string form.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.datanucleus.store.query.Query
Query.QueryType, Query.SubqueryDefinition
-
Field Summary
FieldsFields inherited from class org.datanucleus.store.query.AbstractJavaQuery
candidateCollection, singleString
Fields inherited from class org.datanucleus.store.query.Query
candidateClass, candidateClassName, clr, compilation, ec, explicitParameters, explicitVariables, EXTENSION_CHECK_UNUSED_PARAMETERS, EXTENSION_CLOSE_RESULTS_AT_EC_CLOSE, EXTENSION_COMPILATION_CACHED, EXTENSION_COMPILE_OPTIMISE_VAR_THIS, EXTENSION_EVALUATE_IN_MEMORY, EXTENSION_EXCLUDE_SUBCLASSES, EXTENSION_FLUSH_BEFORE_EXECUTION, EXTENSION_JDOQL_ALLOW_ALL, EXTENSION_JDOQL_STRICT, EXTENSION_JPQL_ALLOW_RANGE, EXTENSION_JPQL_STRICT, EXTENSION_LOAD_RESULTS_AT_COMMIT, EXTENSION_QUERY_TYPE, EXTENSION_RESULT_CACHE_TYPE, EXTENSION_RESULT_CACHE_VALIDATE_OBJECTS, EXTENSION_RESULT_SIZE_METHOD, EXTENSION_RESULTS_CACHED, EXTENSION_SQL_ALLOW_ALL, EXTENSION_SQL_SYNTAX_CHECKS, EXTENSION_UPDATE_ALL_CANDIDATE_FIELDS, EXTENSION_USE_FETCH_PLAN, extensions, filter, from, fromInclNo, fromInclParam, grouping, having, ignoreCache, implicitParameters, imports, inputParameters, insertFields, insertSelectQuery, ordering, parameterNames, parsedImports, queryResults, range, result, resultClass, resultClassName, resultDistinct, storeMgr, subclasses, subqueries, tasks, toExclNo, toExclParam, type, unique, unmodifiable, update
-
Constructor Summary
ConstructorsConstructorDescriptionAbstractJPQLQuery
(StoreManager storeMgr, ExecutionContext ec) Constructor.AbstractJPQLQuery
(StoreManager storeMgr, ExecutionContext ec, String query) Constructor for a JPQL query where the query is specified using the "Single-String" format.AbstractJPQLQuery
(StoreManager storeMgr, ExecutionContext ec, AbstractJPQLQuery q) Constructs a new query instance having the same criteria as the given query. -
Method Summary
Modifier and TypeMethodDescriptionvoid
compileGeneric
(Map parameterValues) Method to generate the generic compilation of this query.protected void
compileInternal
(Map parameterValues) Method to compile the JPQL query.protected void
compileSubqueries
(Map<String, Query.SubqueryDefinition> subqueryMap, QueryCompilation parentCompilation, JavaQueryCompiler parentCompiler, Map parameterValues) Recursively compile the subqueriesAccessor for the query language.protected String
Method to get key for query cacheMethod to take the defined parameters for the query and form a single string.Method to return the names of the extensions supported by this query.resolveClassDeclaration
(String classDecl) Utility to resolve the declaration to a particular class.void
Set the result for the results.Methods inherited from class org.datanucleus.store.query.AbstractJavaQuery
dereferenceFilter, discardCompiled, evaluateInMemory, performDeletePersistentAll, setCandidates, setCandidates, toString
Methods inherited from class org.datanucleus.store.query.Query
addExtension, addSubquery, applyImplicitParameterValueToCompilation, applyImplicitParameterValueToSubqueries, assertIsModifiable, assertIsOpen, assertSupportsCancel, cancel, cancel, cancelTaskObject, checkForMissingParameters, checkParameterTypesAgainstCompilation, checkUnusedParameters, close, closeAll, compile, declareExplicitParameters, declareExplicitVariables, declareImports, deepFindSymbolForParameterInCompilation, deletePersistentAll, deletePersistentAll, deletePersistentAll, deregisterTask, equals, execute, executeQuery, executeWithArray, executeWithMap, executionContextClosing, getBooleanExtensionProperty, getCandidateClass, getCandidateClassMetaData, getCandidateClassName, getCompilation, getDatastoreReadTimeoutMillis, getDatastoreWriteTimeoutMillis, getExecutionContext, getExplicitParametersDeclaration, getExplicitVariablesDeclaration, getExtension, getExtensions, getFetchPlan, getFilter, getFrom, getGrouping, getHaving, getIgnoreCache, getImplicitParameters, getImportsDeclaration, getInputParameters, getInsertFields, getInsertSelectQuery, getNativeQuery, getOrdering, getParameterMapForValues, getParsedImports, getQueryManager, getRange, getRangeFromIncl, getRangeFromInclParam, getRangeToExcl, getRangeToExclParam, getResult, getResultClass, getResultClassName, getResultDistinct, getSerializeRead, getStoreManager, getStringExtensionProperty, getSubqueryForVariable, getType, getUpdate, hashCode, hasSubqueryForVariable, isCompiled, isSubclasses, isUnique, isUnmodifiable, performExecute, prepareDatastore, processesRangeInDatastoreQuery, registerTask, setCacheResults, setCandidateClass, setCandidateClassName, setCompilation, setDatastoreReadTimeoutMillis, setDatastoreWriteTimeoutMillis, setExtensions, setFetchPlan, setFilter, setFrom, setGrouping, setHaving, setIgnoreCache, setImplicitParameter, setImplicitParameter, setInsertFields, setInsertSelectQuery, setOrdering, setRange, setRange, setResultClass, setResultClassName, setResultDistinct, setResultMetaData, setSerializeRead, setSubclasses, setType, setUnique, setUnmodifiable, setUpdate, shouldReturnSingleRow, supportsTimeout, useCaching, useFetchPlan, useResultsCaching
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
-
Constructor Details
-
AbstractJPQLQuery
Constructor.- Parameters:
storeMgr
- StoreManager for this queryec
- ExecutionContext
-
AbstractJPQLQuery
Constructs a new query instance having the same criteria as the given query.- Parameters:
storeMgr
- StoreManager for this queryec
- ExecutionContextq
- The query from which to copy criteria.
-
AbstractJPQLQuery
Constructor for a JPQL query where the query is specified using the "Single-String" format.- Parameters:
storeMgr
- StoreManager for this queryec
- ExecutionContextquery
- The query string
-
-
Method Details
-
getSupportedExtensions
Method to return the names of the extensions supported by this query. To be overridden by subclasses where they support additional extensions.- Overrides:
getSupportedExtensions
in classQuery
- Returns:
- The supported extension names
-
setResult
Set the result for the results. -
getQueryCacheKey
Method to get key for query cache- Returns:
- The cache key
-
getSingleStringQuery
Method to take the defined parameters for the query and form a single string. This is used to print out the query for logging.- Specified by:
getSingleStringQuery
in classAbstractJavaQuery
- Returns:
- The single string
-
compileGeneric
Description copied from class:AbstractJavaQuery
Method to generate the generic compilation of this query.- Specified by:
compileGeneric
in classAbstractJavaQuery
- Parameters:
parameterValues
- Values for any parameters
-
compileInternal
Method to compile the JPQL query. This implementation assumes that we are using the "generic" JPQL compiler in org.datanucleus.query.compiler. If not then override this method. Will populate the "compilation" class variable.- Specified by:
compileInternal
in classQuery
- Parameters:
parameterValues
- Map of param values keyed by param name.
-
compileSubqueries
protected void compileSubqueries(Map<String, Query.SubqueryDefinition> subqueryMap, QueryCompilation parentCompilation, JavaQueryCompiler parentCompiler, Map parameterValues) Recursively compile the subqueries- Parameters:
subqueryMap
- The subquery definition mapparentCompilation
- The parent compilationparentCompiler
- The parent compilerparameterValues
- The parameters map
-
resolveClassDeclaration
Utility to resolve the declaration to a particular class. Takes the passed in name, together with the defined import declarations and returns the class represented by the declaration.- Overrides:
resolveClassDeclaration
in classQuery
- Parameters:
classDecl
- The declaration- Returns:
- The class it resolves to (if any)
- Throws:
NucleusUserException
- Thrown if the class cannot be resolved.
-
getLanguage
Accessor for the query language.- Overrides:
getLanguage
in classQuery
- Returns:
- Query language
-