Package org.datanucleus.api.jdo
Class JDOQuery<T>
- java.lang.Object
-
- org.datanucleus.api.jdo.JDOQuery<T>
-
- Type Parameters:
T
- Candidate class for this query
- All Implemented Interfaces:
Serializable
,AutoCloseable
,javax.jdo.Query<T>
public class JDOQuery<T> extends Object implements javax.jdo.Query<T>
Wrapper for JDO Query class. Stores the PM the query is executed against, the internal query, and the query language. The language is stored since it is referenced by the JDO API and so we don't have to embody knowledge of which internal query type is for which language (could be moved to the internal query).- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static String
JDOQL_QUERY_LANGUAGE
static String
JPQL_QUERY_LANGUAGE
static String
PROPERTY_CLOSEABLE_QUERY
static String
SQL_QUERY_LANGUAGE
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addExtension(String key, Object value)
Method to add an extension to the query.void
addSubquery(javax.jdo.Query sub, String variableDecl, String candidateExpr)
Add a subquery to this query.void
addSubquery(javax.jdo.Query sub, String variableDecl, String candidateExpr, String parameter)
Add a subquery to this query.void
addSubquery(javax.jdo.Query sub, String variableDecl, String candidateExpr, String... parameters)
Add a subquery to this query.void
addSubquery(javax.jdo.Query sub, String variableDecl, String candidateExpr, Map parameters)
Add a subquery to this query.protected void
assertIsOpen()
Method to assert if this Query is open.void
cancel(Thread thr)
Method to cancel the executing query for the supplied thread.void
cancelAll()
Method to cancel any executing queries.void
close()
void
close(Object queryResult)
Close the query result.void
closeAll()
Close all query results for this query.void
compile()
Compile the query.javax.jdo.Query<T>
datastoreReadTimeoutMillis(Integer interval)
javax.jdo.Query<T>
datastoreWriteTimeoutMillis(Integer interval)
void
declareImports(String imports)
Declare any imports for the query.void
declareParameters(String parameters)
Declare any parameters for the query.void
declareVariables(String variables)
Declare any variables for the query.long
deletePersistentAll()
Execute the query deleting all instances found.long
deletePersistentAll(Object... parameters)
Execute the query deleting all instances found.long
deletePersistentAll(Map parameters)
Execute the query deleting all instances found.protected long
deletePersistentInternal()
Object
execute()
Execute the query.Object
execute(Object p1)
Execute the query.Object
execute(Object p1, Object p2)
Execute the query.Object
execute(Object p1, Object p2, Object p3)
Execute the query.protected Object
executeInternal()
List<T>
executeList()
List<Object>
executeResultList()
<R> List<R>
executeResultList(Class<R> resultCls)
Object
executeResultUnique()
<R> R
executeResultUnique(Class<R> resultCls)
T
executeUnique()
Object
executeWithArray(Object... parameterValues)
Execute the query.Object
executeWithMap(Map parameters)
Execute the query.javax.jdo.Query<T>
extension(String key, Object value)
javax.jdo.Query<T>
extensions(Map values)
javax.jdo.Query<T>
filter(String filter)
Integer
getDatastoreReadTimeoutMillis()
Accessor for the datastore read timeout.Integer
getDatastoreWriteTimeoutMillis()
Accessor for the datastore write timeout.javax.jdo.FetchPlan
getFetchPlan()
Accessor for the fetch plan to use.boolean
getIgnoreCache()
Accessor for the ignore cache settingorg.datanucleus.store.query.Query<T>
getInternalQuery()
Accessor for the internal query.String
getLanguage()
Accessor for the query language.Object
getNativeQuery()
Accessor for the native query invoked by this query (if known at this time and supported by the store plugin).javax.jdo.PersistenceManager
getPersistenceManager()
Accessor for the PersistenceManager.Boolean
getSerializeRead()
Accessor for whether to serialise any read objects in this query.javax.jdo.Query<T>
groupBy(String grouping)
javax.jdo.Query<T>
ignoreCache(boolean flag)
javax.jdo.Query<T>
imports(String imports)
boolean
isClosed()
Accessor for whether this Query is closed.boolean
isUnmodifiable()
Accessor for whether the query is modifiable.javax.jdo.Query<T>
orderBy(String ordering)
javax.jdo.Query<T>
parameters(String parameters)
javax.jdo.Query<T>
range(long fromIncl, long toExcl)
javax.jdo.Query<T>
range(String range)
javax.jdo.Query<T>
result(String result)
javax.jdo.Query<T>
saveAsNamedQuery(String name)
Save this query as a named query with the specified name.javax.jdo.Query<T>
serializeRead(Boolean serialize)
void
setCandidates(Collection<T> pcs)
Set the candidates for the query.void
setCandidates(javax.jdo.Extent<T> extent)
Set the candidates for the query.void
setClass(Class<T> candidateClass)
Set the candidate class for the query.void
setDatastoreReadTimeoutMillis(Integer timeout)
Set the datastore read timeout.void
setDatastoreWriteTimeoutMillis(Integer timeout)
Set the datastore write timeout.void
setExtensions(Map extensions)
Set the extensions for the query.void
setFilter(String filter)
Set the filter for the query.void
setGrouping(String grouping)
Set the grouping for the query.void
setIgnoreCache(boolean ignoreCache)
Set the ignore cache setting for the query.javax.jdo.Query<T>
setNamedParameters(Map<String,?> paramMap)
void
setOrdering(String ordering)
Set the ordering for the query.javax.jdo.Query<T>
setParameters(Object... paramValues)
void
setRange(long fromIncl, long toExcl)
Set the range for the query.void
setRange(String range)
Set the range for the query.void
setResult(String result)
Set the result for the query.void
setResultClass(Class result_cls)
Set the result class for the query.void
setSerializeRead(Boolean serialize)
Mutator for whether to serialise any read objects.void
setUnique(boolean unique)
Set whether to expect a unique result.void
setUnmodifiable()
Set the query to be unmodifiable.javax.jdo.Query<T>
subquery(javax.jdo.Query sub, String variableDecl, String candidateExpr)
javax.jdo.Query<T>
subquery(javax.jdo.Query sub, String variableDecl, String candidateExpr, String parameter)
javax.jdo.Query<T>
subquery(javax.jdo.Query sub, String variableDecl, String candidateExpr, String... parameters)
javax.jdo.Query<T>
subquery(javax.jdo.Query sub, String variableDecl, String candidateExpr, Map parameters)
String
toString()
Convenience method to return the query in string form.javax.jdo.Query<T>
unmodifiable()
javax.jdo.Query<T>
variables(String variables)
-
-
-
Field Detail
-
PROPERTY_CLOSEABLE_QUERY
public static final String PROPERTY_CLOSEABLE_QUERY
- See Also:
- Constant Field Values
-
JDOQL_QUERY_LANGUAGE
public static final String JDOQL_QUERY_LANGUAGE
- See Also:
- Constant Field Values
-
JPQL_QUERY_LANGUAGE
public static final String JPQL_QUERY_LANGUAGE
- See Also:
- Constant Field Values
-
SQL_QUERY_LANGUAGE
public static final String SQL_QUERY_LANGUAGE
- See Also:
- Constant Field Values
-
-
Method Detail
-
close
public void close()
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfacejavax.jdo.Query<T>
-
isClosed
public boolean isClosed()
Accessor for whether this Query is closed.- Returns:
- Whether this Query is closed.
-
close
public void close(Object queryResult)
Close the query result.- Specified by:
close
in interfacejavax.jdo.Query<T>
- Parameters:
queryResult
- Query result
-
closeAll
public void closeAll()
Close all query results for this query.- Specified by:
closeAll
in interfacejavax.jdo.Query<T>
-
compile
public void compile()
Compile the query.- Specified by:
compile
in interfacejavax.jdo.Query<T>
-
declareImports
public void declareImports(String imports)
Declare any imports for the query.- Specified by:
declareImports
in interfacejavax.jdo.Query<T>
- Parameters:
imports
- The imports
-
declareParameters
public void declareParameters(String parameters)
Declare any parameters for the query.- Specified by:
declareParameters
in interfacejavax.jdo.Query<T>
- Parameters:
parameters
- The parameters
-
declareVariables
public void declareVariables(String variables)
Declare any variables for the query.- Specified by:
declareVariables
in interfacejavax.jdo.Query<T>
- Parameters:
variables
- The variables
-
imports
public javax.jdo.Query<T> imports(String imports)
- Specified by:
imports
in interfacejavax.jdo.Query<T>
-
parameters
public javax.jdo.Query<T> parameters(String parameters)
- Specified by:
parameters
in interfacejavax.jdo.Query<T>
-
variables
public javax.jdo.Query<T> variables(String variables)
- Specified by:
variables
in interfacejavax.jdo.Query<T>
-
setParameters
public javax.jdo.Query<T> setParameters(Object... paramValues)
- Specified by:
setParameters
in interfacejavax.jdo.Query<T>
-
setNamedParameters
public javax.jdo.Query<T> setNamedParameters(Map<String,?> paramMap)
- Specified by:
setNamedParameters
in interfacejavax.jdo.Query<T>
-
execute
public Object execute()
Execute the query.- Specified by:
execute
in interfacejavax.jdo.Query<T>
- Returns:
- The results
-
execute
public Object execute(Object p1)
Execute the query.- Specified by:
execute
in interfacejavax.jdo.Query<T>
- Parameters:
p1
- First param value- Returns:
- The results
-
execute
public Object execute(Object p1, Object p2)
Execute the query.- Specified by:
execute
in interfacejavax.jdo.Query<T>
- Parameters:
p1
- First param valuep2
- Second param value- Returns:
- The results
-
execute
public Object execute(Object p1, Object p2, Object p3)
Execute the query.- Specified by:
execute
in interfacejavax.jdo.Query<T>
- Parameters:
p1
- First param valuep2
- Second param valuep3
- Third param value- Returns:
- The results
-
executeWithArray
public Object executeWithArray(Object... parameterValues)
Execute the query.- Specified by:
executeWithArray
in interfacejavax.jdo.Query<T>
- Parameters:
parameterValues
- Param values- Returns:
- The results
-
executeWithMap
public Object executeWithMap(Map parameters)
Execute the query.- Specified by:
executeWithMap
in interfacejavax.jdo.Query<T>
- Parameters:
parameters
- Param values- Returns:
- The results
-
executeResultList
public <R> List<R> executeResultList(Class<R> resultCls)
- Specified by:
executeResultList
in interfacejavax.jdo.Query<T>
-
executeResultUnique
public <R> R executeResultUnique(Class<R> resultCls)
- Specified by:
executeResultUnique
in interfacejavax.jdo.Query<T>
-
executeResultList
public List<Object> executeResultList()
- Specified by:
executeResultList
in interfacejavax.jdo.Query<T>
-
executeResultUnique
public Object executeResultUnique()
- Specified by:
executeResultUnique
in interfacejavax.jdo.Query<T>
-
executeInternal
protected Object executeInternal()
-
deletePersistentAll
public long deletePersistentAll()
Execute the query deleting all instances found.- Specified by:
deletePersistentAll
in interfacejavax.jdo.Query<T>
- Returns:
- Number of deleted instances
-
deletePersistentAll
public long deletePersistentAll(Object... parameters)
Execute the query deleting all instances found.- Specified by:
deletePersistentAll
in interfacejavax.jdo.Query<T>
- Parameters:
parameters
- Parameters to use when executing- Returns:
- Number of deleted instances
-
deletePersistentAll
public long deletePersistentAll(Map parameters)
Execute the query deleting all instances found.- Specified by:
deletePersistentAll
in interfacejavax.jdo.Query<T>
- Parameters:
parameters
- Parameters to use when executing- Returns:
- Number of deleted instances
-
deletePersistentInternal
protected long deletePersistentInternal()
-
cancelAll
public void cancelAll()
Method to cancel any executing queries.- Specified by:
cancelAll
in interfacejavax.jdo.Query<T>
- Throws:
javax.jdo.JDOUnsupportedOptionException
- if the datastore doesn't support cancellation of queries
-
cancel
public void cancel(Thread thr)
Method to cancel the executing query for the supplied thread.- Specified by:
cancel
in interfacejavax.jdo.Query<T>
- Throws:
javax.jdo.JDOUnsupportedOptionException
- if the datastore doesn't support cancellation of queries
-
setCandidates
public void setCandidates(javax.jdo.Extent<T> extent)
Set the candidates for the query.- Specified by:
setCandidates
in interfacejavax.jdo.Query<T>
- Parameters:
extent
- Extent defining the candidates
-
setCandidates
public void setCandidates(Collection<T> pcs)
Set the candidates for the query.- Specified by:
setCandidates
in interfacejavax.jdo.Query<T>
- Parameters:
pcs
- PC candidates
-
setClass
public void setClass(Class<T> candidateClass)
Set the candidate class for the query.- Specified by:
setClass
in interfacejavax.jdo.Query<T>
- Parameters:
candidateClass
- Candidate class
-
addExtension
public void addExtension(String key, Object value)
Method to add an extension to the query.- Specified by:
addExtension
in interfacejavax.jdo.Query<T>
- Parameters:
key
- Key for the extensionvalue
- Value for the extension
-
setExtensions
public void setExtensions(Map extensions)
Set the extensions for the query.- Specified by:
setExtensions
in interfacejavax.jdo.Query<T>
- Parameters:
extensions
- The extensions
-
extension
public javax.jdo.Query<T> extension(String key, Object value)
- Specified by:
extension
in interfacejavax.jdo.Query<T>
-
extensions
public javax.jdo.Query<T> extensions(Map values)
- Specified by:
extensions
in interfacejavax.jdo.Query<T>
-
getFetchPlan
public javax.jdo.FetchPlan getFetchPlan()
Accessor for the fetch plan to use.- Specified by:
getFetchPlan
in interfacejavax.jdo.Query<T>
- Returns:
- The fetch plan
-
filter
public javax.jdo.Query<T> filter(String filter)
- Specified by:
filter
in interfacejavax.jdo.Query<T>
-
setFilter
public void setFilter(String filter)
Set the filter for the query.- Specified by:
setFilter
in interfacejavax.jdo.Query<T>
- Parameters:
filter
- The query filter
-
groupBy
public javax.jdo.Query<T> groupBy(String grouping)
- Specified by:
groupBy
in interfacejavax.jdo.Query<T>
-
setGrouping
public void setGrouping(String grouping)
Set the grouping for the query.- Specified by:
setGrouping
in interfacejavax.jdo.Query<T>
- Parameters:
grouping
- The grouping
-
getIgnoreCache
public boolean getIgnoreCache()
Accessor for the ignore cache setting- Specified by:
getIgnoreCache
in interfacejavax.jdo.Query<T>
- Returns:
- Ignore cache
-
setIgnoreCache
public void setIgnoreCache(boolean ignoreCache)
Set the ignore cache setting for the query.- Specified by:
setIgnoreCache
in interfacejavax.jdo.Query<T>
- Parameters:
ignoreCache
- The ignore cache setting
-
ignoreCache
public javax.jdo.Query<T> ignoreCache(boolean flag)
- Specified by:
ignoreCache
in interfacejavax.jdo.Query<T>
-
orderBy
public javax.jdo.Query<T> orderBy(String ordering)
- Specified by:
orderBy
in interfacejavax.jdo.Query<T>
-
setOrdering
public void setOrdering(String ordering)
Set the ordering for the query.- Specified by:
setOrdering
in interfacejavax.jdo.Query<T>
- Parameters:
ordering
- The ordering
-
getPersistenceManager
public javax.jdo.PersistenceManager getPersistenceManager()
Accessor for the PersistenceManager.- Specified by:
getPersistenceManager
in interfacejavax.jdo.Query<T>
- Returns:
- PM
-
range
public javax.jdo.Query<T> range(long fromIncl, long toExcl)
- Specified by:
range
in interfacejavax.jdo.Query<T>
-
range
public javax.jdo.Query<T> range(String range)
- Specified by:
range
in interfacejavax.jdo.Query<T>
-
setRange
public void setRange(String range)
Set the range for the query.- Specified by:
setRange
in interfacejavax.jdo.Query<T>
- Parameters:
range
- The range specification
-
setRange
public void setRange(long fromIncl, long toExcl)
Set the range for the query.- Specified by:
setRange
in interfacejavax.jdo.Query<T>
- Parameters:
fromIncl
- From range inclusivetoExcl
- To range exclusive
-
result
public javax.jdo.Query<T> result(String result)
- Specified by:
result
in interfacejavax.jdo.Query<T>
-
setResult
public void setResult(String result)
Set the result for the query.- Specified by:
setResult
in interfacejavax.jdo.Query<T>
- Parameters:
result
- Result clause
-
setResultClass
public void setResultClass(Class result_cls)
Set the result class for the query.- Specified by:
setResultClass
in interfacejavax.jdo.Query<T>
- Parameters:
result_cls
- Result class
-
setDatastoreReadTimeoutMillis
public void setDatastoreReadTimeoutMillis(Integer timeout)
Set the datastore read timeout.- Specified by:
setDatastoreReadTimeoutMillis
in interfacejavax.jdo.Query<T>
- Parameters:
timeout
- Timeout interval (millisecs)
-
getDatastoreReadTimeoutMillis
public Integer getDatastoreReadTimeoutMillis()
Accessor for the datastore read timeout.- Specified by:
getDatastoreReadTimeoutMillis
in interfacejavax.jdo.Query<T>
- Returns:
- Timeout (if defined)
-
setDatastoreWriteTimeoutMillis
public void setDatastoreWriteTimeoutMillis(Integer timeout)
Set the datastore write timeout.- Specified by:
setDatastoreWriteTimeoutMillis
in interfacejavax.jdo.Query<T>
- Parameters:
timeout
- Timeout interval (millisecs)
-
getDatastoreWriteTimeoutMillis
public Integer getDatastoreWriteTimeoutMillis()
Accessor for the datastore write timeout.- Specified by:
getDatastoreWriteTimeoutMillis
in interfacejavax.jdo.Query<T>
- Returns:
- Timeout (if defined)
-
datastoreReadTimeoutMillis
public javax.jdo.Query<T> datastoreReadTimeoutMillis(Integer interval)
- Specified by:
datastoreReadTimeoutMillis
in interfacejavax.jdo.Query<T>
-
datastoreWriteTimeoutMillis
public javax.jdo.Query<T> datastoreWriteTimeoutMillis(Integer interval)
- Specified by:
datastoreWriteTimeoutMillis
in interfacejavax.jdo.Query<T>
-
setUnique
public void setUnique(boolean unique)
Set whether to expect a unique result.- Specified by:
setUnique
in interfacejavax.jdo.Query<T>
- Parameters:
unique
- Whether results are unique
-
isUnmodifiable
public boolean isUnmodifiable()
Accessor for whether the query is modifiable.- Specified by:
isUnmodifiable
in interfacejavax.jdo.Query<T>
- Returns:
- Whether it is modifiable
-
setUnmodifiable
public void setUnmodifiable()
Set the query to be unmodifiable.- Specified by:
setUnmodifiable
in interfacejavax.jdo.Query<T>
-
unmodifiable
public javax.jdo.Query<T> unmodifiable()
- Specified by:
unmodifiable
in interfacejavax.jdo.Query<T>
-
addSubquery
public void addSubquery(javax.jdo.Query sub, String variableDecl, String candidateExpr)
Add a subquery to this query.- Specified by:
addSubquery
in interfacejavax.jdo.Query<T>
- Parameters:
sub
- the subquery to add to this QueryvariableDecl
- the name of the variable in the outer query to bind the results of the subquerycandidateExpr
- the candidate collection of the subquery as an expression using terms of the outer query
-
addSubquery
public void addSubquery(javax.jdo.Query sub, String variableDecl, String candidateExpr, String parameter)
Add a subquery to this query. The String version of the method binds the named expression to the parameter implictly or explicitly declared in the subquery.- Specified by:
addSubquery
in interfacejavax.jdo.Query<T>
- Parameters:
sub
- the subquery to add to this QueryvariableDecl
- the name of the variable to be used in this QuerycandidateExpr
- the candidate collection to apply to the subqueryparameter
- the expression from the outer query to bind the parameter in the subquery
-
addSubquery
public void addSubquery(javax.jdo.Query sub, String variableDecl, String candidateExpr, String... parameters)
Add a subquery to this query. The String version of the method binds the named expression to the parameter implictly or explicitly declared in the subquery.- Specified by:
addSubquery
in interfacejavax.jdo.Query<T>
- Parameters:
sub
- the subquery to add to this QueryvariableDecl
- the name of the variable to be used in this QuerycandidateExpr
- the candidate collection to apply to the subqueryparameters
- the expressions from the outer query to bind the parameter in the subquery
-
addSubquery
public void addSubquery(javax.jdo.Query sub, String variableDecl, String candidateExpr, Map parameters)
Add a subquery to this query. The String version of the method binds the named expression to the parameter implictly or explicitly declared in the subquery.- Specified by:
addSubquery
in interfacejavax.jdo.Query<T>
- Parameters:
sub
- the subquery to add to this QueryvariableDecl
- the name of the variable to be used in this QuerycandidateExpr
- the candidate collection to apply to the subqueryparameters
- the expressions from the outer query to bind the parameter in the subquery
-
subquery
public javax.jdo.Query<T> subquery(javax.jdo.Query sub, String variableDecl, String candidateExpr)
- Specified by:
subquery
in interfacejavax.jdo.Query<T>
-
subquery
public javax.jdo.Query<T> subquery(javax.jdo.Query sub, String variableDecl, String candidateExpr, String parameter)
- Specified by:
subquery
in interfacejavax.jdo.Query<T>
-
subquery
public javax.jdo.Query<T> subquery(javax.jdo.Query sub, String variableDecl, String candidateExpr, String... parameters)
- Specified by:
subquery
in interfacejavax.jdo.Query<T>
-
subquery
public javax.jdo.Query<T> subquery(javax.jdo.Query sub, String variableDecl, String candidateExpr, Map parameters)
- Specified by:
subquery
in interfacejavax.jdo.Query<T>
-
getSerializeRead
public Boolean getSerializeRead()
Accessor for whether to serialise any read objects in this query.- Specified by:
getSerializeRead
in interfacejavax.jdo.Query<T>
- Returns:
- The setting for whether to serialise any read objects
-
setSerializeRead
public void setSerializeRead(Boolean serialize)
Mutator for whether to serialise any read objects.- Specified by:
setSerializeRead
in interfacejavax.jdo.Query<T>
- Parameters:
serialize
- Whether to serialise any read objects in this query.
-
serializeRead
public javax.jdo.Query<T> serializeRead(Boolean serialize)
- Specified by:
serializeRead
in interfacejavax.jdo.Query<T>
-
getInternalQuery
public org.datanucleus.store.query.Query<T> getInternalQuery()
Accessor for the internal query.- Returns:
- Internal query
-
getLanguage
public String getLanguage()
Accessor for the query language.- Returns:
- Query language
-
saveAsNamedQuery
public javax.jdo.Query<T> saveAsNamedQuery(String name)
Save this query as a named query with the specified name.- Specified by:
saveAsNamedQuery
in interfacejavax.jdo.Query<T>
- Parameters:
name
- The name to refer to it under- Returns:
- This query
-
toString
public String toString()
Convenience method to return the query in string form.
-
getNativeQuery
public Object getNativeQuery()
Accessor for the native query invoked by this query (if known at this time and supported by the store plugin).- Returns:
- The native query (e.g for RDBMS this is the SQL).
-
assertIsOpen
protected void assertIsOpen()
Method to assert if this Query is open.- Throws:
javax.jdo.JDOFatalUserException
- if the Query is closed.
-
-