Interface QueryProducer
- All Known Subinterfaces:
EventSource
,QueryProducerImplementor
,Session
,SessionImplementor
,SharedSessionContract
,SharedSessionContractImplementor
,StatelessSession
- All Known Implementing Classes:
AbstractDelegateSessionImplementor
,AbstractSharedSessionContract
,SessionDelegatorBaseImpl
,SessionImpl
,SessionLazyDelegator
,SharedSessionDelegatorBaseImpl
,StatelessSessionImpl
,ToOneDelegateSessionImplementor
Query
and NativeQuery
.
Implementors include Session
and StatelessSession
.
Many operations of the interface have the same or very similar signatures to operations of
EntityManager
. They are declared here to allow reuse by
StatelessSession
.
Unlike the corresponding operations of EntityManager
, operations for creating untyped
instances of Query
are all marked as deprecated. Clients must migrate to the use of
the equivalent operations which accept a Class
and return a typed Query
.
-
Method Summary
Modifier and TypeMethodDescriptioncreateMutationQuery
(CriteriaDelete deleteQuery) Create aMutationQuery
from the given delete criteria treecreateMutationQuery
(CriteriaUpdate updateQuery) Create aMutationQuery
from the given update criteria treecreateMutationQuery
(String hqlString) Create aMutationQuery
reference for the given HQL insert, update, or delete statement.createMutationQuery
(JpaCriteriaInsert insertSelect) Create aMutationQuery
from the given insert criteria treecreateMutationQuery
(JpaCriteriaInsertSelect insertSelect) Create aMutationQuery
from the given insert-select criteria treeCreate aMutationQuery
instance for the given named insert, update, or delete HQL query.createNamedQuery
(String name) Deprecated.<R> Query<R>
createNamedQuery
(String name, Class<R> resultClass) Create a typedQuery
instance for the given named query.Deprecated.<R> SelectionQuery<R>
createNamedSelectionQuery
(String name, Class<R> resultType) Create aSelectionQuery
instance for the namedNamedQuery
with the given result type.createNativeMutationQuery
(String sqlString) Create aNativeQuery
instance for the given native SQL statement.createNativeQuery
(String sqlString) Deprecated.<R> NativeQuery<R>
createNativeQuery
(String sqlString, Class<R> resultClass) Create aNativeQuery
instance for the given native SQL query using an implicit mapping to the specified Java type.<R> NativeQuery<R>
createNativeQuery
(String sqlString, Class<R> resultClass, String tableAlias) Create aNativeQuery
instance for the given native SQL query using an implicit mapping to the specified Java entity type.createNativeQuery
(String sqlString, String resultSetMappingName) Deprecated.<R> NativeQuery<R>
createNativeQuery
(String sqlString, String resultSetMappingName, Class<R> resultClass) Create aNativeQuery
instance for the given native SQL query using an explicit mapping to the specified Java type.createQuery
(CriteriaDelete deleteQuery) Deprecated.<R> Query<R>
createQuery
(CriteriaQuery<R> criteriaQuery) Create aQuery
for the given JPACriteriaQuery
.createQuery
(CriteriaUpdate updateQuery) Deprecated.<R> Query<R>
createQuery
(TypedQueryReference<R> typedQueryReference) Create a typedQuery
instance for the given typed query reference.createQuery
(String queryString) Deprecated.The overloaded formcreateQuery(String, Class)
which takes a result type is strongly recommended in preference to this method, since it returns a typedQuery
object, and because it is able to use the given result type to infer theselect
list, and even sometimes thefrom
clause.<R> Query<R>
createQuery
(String queryString, Class<R> resultClass) Create a typedQuery
instance for the given HQL query string and given query result type.<R> SelectionQuery<R>
createSelectionQuery
(CriteriaQuery<R> criteria) Create aSelectionQuery
reference for the givenCriteriaQuery
.createSelectionQuery
(String hqlString) Deprecated.The overloaded formcreateSelectionQuery(String, Class)
which takes a result type is strongly recommended in preference to this method, since it returns a typedSelectionQuery
object, and because it is able to use the given result type to infer theselect
list, and even sometimes thefrom
clause.<R> SelectionQuery<R>
createSelectionQuery
(String hqlString, Class<R> resultType) Create aSelectionQuery
instance for the given HQL query string and given query result type.getNamedNativeQuery
(String name) Deprecated.getNamedNativeQuery
(String name, String resultSetMapping) Deprecated.getNamedQuery
(String queryName) Deprecated.
-
Method Details
-
createQuery
Deprecated.The overloaded formcreateQuery(String, Class)
which takes a result type is strongly recommended in preference to this method, since it returns a typedQuery
object, and because it is able to use the given result type to infer theselect
list, and even sometimes thefrom
clause. Alternatively,createSelectionQuery(String, Class)
is preferred for queries, andcreateMutationQuery(String)
for insert, update, and delete statements.Create aQuery
instance for the given HQL query, or HQL insert, update, or delete statement.If a query has no explicit
select
list, the select list is inferred:- if there is exactly one root entity in the
from
clause, and it has no non-fetch
joins, then that root entity is the only element of the select list, or - if there is an entity with the alias
this
, then that entity is the only element of the select list, or - otherwise, the query is considered ambiguous, and this
method throws a
SemanticException
.
The query must have an explicit
from
clause, which can never be inferred.- Parameters:
queryString
- The HQL query- Returns:
- The
Query
instance for manipulation and execution - See Also:
- API Note:
- Returns a raw
Query
type instead of a wildcard typeQuery<?>
, to match the signature of the JPA methodEntityManager.createQuery(String)
.
- if there is exactly one root entity in the
-
createQuery
Create a typedQuery
instance for the given HQL query string and given query result type.- If the query has a single item in the
select
list, then the select item must be assignable to the given result type. - Otherwise, if there are multiple select items, then the
select items will be packaged into an instance of the
result type. The result type must have an appropriate
constructor with parameter types matching the select items,
or it must be one of the types
Object[]
,List
,Map
, orTuple
.
If a query has no explicit
select
list, the select list is inferred from the given query result type:- if the result type is an entity type, the query must have
exactly one root entity in the
from
clause, it must be assignable to the result type, and the inferred select list will contain just that entity, or - otherwise, the select list contains every root entity and
every non-
fetch
joined entity, and each query result will be packaged into an instance of the result type, just as specified above.
If a query has no explicit
from
clause, and the given result type is an entity type, the root entity is inferred to be the result type.Passing
Object.class
as the query result type is not recommended. In this special case, this method has the same semantics as the overloadcreateQuery(String)
.The returned
Query
may be executed by callingQuery.getResultList()
orQuery.getSingleResult()
. - If the query has a single item in the
-
createQuery
Create a typedQuery
instance for the given typed query reference.- Parameters:
typedQueryReference
- the type query reference- Returns:
- The
Query
instance for execution - Throws:
IllegalArgumentException
- if a query has not been defined with the name of the typed query reference or if the query result is found to not be assignable to result class of the typed query reference- See Also:
-
createQuery
Create aQuery
for the given JPACriteriaQuery
. -
createQuery
Deprecated.Create aMutationQuery
for the given JPACriteriaUpdate
-
createQuery
Deprecated.Create aMutationQuery
for the given JPACriteriaDelete
-
createNativeQuery
Deprecated.Create aNativeQuery
instance for the given native SQL query.- Parameters:
sqlString
- a native SQL query string- Returns:
- The
NativeQuery
instance for manipulation and execution - See Also:
-
createNativeQuery
Create aNativeQuery
instance for the given native SQL query using an implicit mapping to the specified Java type.- If the given class is an entity class, this method is equivalent
to
createNativeQuery(sqlString).addEntity(resultClass)
. - If the given class has a registered
JavaType
, then the query must return a result set with a single column whoseJdbcType
is compatible with thatJavaType
. - Otherwise, the select items will be packaged into an instance of
the result type. The result type must have an appropriate
constructor with parameter types matching the select items, or it
must be one of the types
Object[]
,List
,Map
, orTuple
.
- Parameters:
sqlString
- The native (SQL) query stringresultClass
- The Java type to map results to- Returns:
- The
NativeQuery
instance for manipulation and execution - See Also:
- API Note:
- Changes in JPA 3.2 required de-typing this to be compilable with their changes
- If the given class is an entity class, this method is equivalent
to
-
createNativeQuery
Create aNativeQuery
instance for the given native SQL query using an implicit mapping to the specified Java entity type.The given class must be an entity class. This method is equivalent to
createNativeQuery(sqlString).addEntity(tableAlias, resultClass)
.- Parameters:
sqlString
- Native (SQL) query stringresultClass
- The Java entity class to map results totableAlias
- The table alias for columns in the result set- Returns:
- The
NativeQuery
instance for manipulation and execution - See Also:
-
createNativeQuery
@Deprecated(since="6.0") NativeQuery createNativeQuery(String sqlString, String resultSetMappingName) Deprecated.Create aNativeQuery
instance for the given native SQL query using an explicit mapping to the specified Java type.The given result set mapping name must identify a mapping defined by a
SqlResultSetMapping
annotation.- Parameters:
sqlString
- The native (SQL) query stringresultSetMappingName
- The explicit result mapping name- Returns:
- The
NativeQuery
instance for manipulation and execution - See Also:
-
createNativeQuery
<R> NativeQuery<R> createNativeQuery(String sqlString, String resultSetMappingName, Class<R> resultClass) Create aNativeQuery
instance for the given native SQL query using an explicit mapping to the specified Java type.The given result set mapping name must identify a mapping defined by a
SqlResultSetMapping
annotation.- Parameters:
sqlString
- The native (SQL) query stringresultSetMappingName
- The explicit result mapping name- Returns:
- The
NativeQuery
instance for manipulation and execution - See Also:
-
createSelectionQuery
Deprecated.The overloaded formcreateSelectionQuery(String, Class)
which takes a result type is strongly recommended in preference to this method, since it returns a typedSelectionQuery
object, and because it is able to use the given result type to infer theselect
list, and even sometimes thefrom
clause.Create aSelectionQuery
reference for the given HQLselect
statement.If the statement has no explicit
select
list, the select list is inferred:- if there is exactly one root entity in the
from
clause, and it has no non-fetch
joins, then that root entity is the only element of the select list, or - if there is an entity with the alias
this
, then that entity is the only element of the select list, or - otherwise, the query is considered ambiguous, and this
method throws a
SemanticException
.
The query must have an explicit
from
clause, which can never be inferred.- Throws:
IllegalSelectQueryException
- if the given HQL query is aninsert
,update
ordelete
statement
- if there is exactly one root entity in the
-
createSelectionQuery
Create aSelectionQuery
instance for the given HQL query string and given query result type.- If the query has a single item in the
select
list, then the select item must be assignable to the given result type. - Otherwise, if there are multiple select items, then the
select items will be packaged into an instance of the
result type. The result type must have an appropriate
constructor with parameter types matching the select items,
or it must be one of the types
Object[]
,List
,Map
, orTuple
.
If a query has no explicit
select
list, the select list is inferred from the given query result type:- if the result type is an entity type, the query must have
exactly one root entity in the
from
clause, it must be assignable to the result type, and the inferred select list will contain just that entity, or - otherwise, the select list contains every root entity and
every non-
fetch
joined entity, and each query result will be packaged into an instance of the result type, just as specified above.
If a query has no explicit
from
clause, and the given result type is an entity type, the root entity is inferred to be the result type.Passing
Object.class
as the query result type is not recommended. In this special case, this method has the same semantics as the overloadcreateSelectionQuery(String)
.The returned
Query
may be executed by callingQuery.getResultList()
orQuery.getSingleResult()
.- Parameters:
hqlString
- The HQLselect
query as a stringresultType
- TheClass
object representing the query result type, which should not beObject.class
- Throws:
IllegalSelectQueryException
- if the given HQL query is aninsert
,update
ordelete
statement- See Also:
- If the query has a single item in the
-
createSelectionQuery
Create aSelectionQuery
reference for the givenCriteriaQuery
.- See Also:
-
createMutationQuery
Create aMutationQuery
reference for the given HQL insert, update, or delete statement.- Parameters:
hqlString
- The HQLinsert
,update
, ordelete
statement- Throws:
IllegalMutationQueryException
- if the given HQL query is aselect
query
-
createMutationQuery
Create aMutationQuery
from the given update criteria tree -
createMutationQuery
Create aMutationQuery
from the given delete criteria tree -
createMutationQuery
Create aMutationQuery
from the given insert-select criteria tree -
createMutationQuery
Create aMutationQuery
from the given insert criteria tree -
createNativeMutationQuery
Create aNativeQuery
instance for the given native SQL statement.- Parameters:
sqlString
- a native SQL statement string- Returns:
- The NativeQuery instance for manipulation and execution
-
createNamedQuery
Deprecated.Create a typedQuery
instance for the given named query. The named query might be defined in HQL or in native SQL.- Parameters:
name
- the name of a predefined named query- Returns:
- The
Query
instance for manipulation and execution - Throws:
IllegalArgumentException
- if a query has not been defined with the given name or if the query string is found to be invalid- See Also:
-
createNamedQuery
Create a typedQuery
instance for the given named query. The named query might be defined in HQL or in native SQL.- Parameters:
name
- the name of a query defined in metadataresultClass
- the type of the query result- Returns:
- The
Query
instance for manipulation and execution - Throws:
IllegalArgumentException
- if a query has not been defined with the given name or if the query string is found to be invalid or if the query result is found to not be assignable to the specified type- See Also:
-
createNamedSelectionQuery
Deprecated.Create aSelectionQuery
instance for the namedNamedQuery
.- Throws:
IllegalSelectQueryException
- if the given HQL query is not a select queryUnknownNamedQueryException
- if no query has been defined with the given name- Implementation Note:
- This method interprets some queries with an implicit
select
list in a quite unintuitive way. In some future release, this method will be modified to throw an exception when passed a query with a missingselect
. For now, usecreateNamedSelectionQuery(String, Class)
to avoid ambiguity.
-
createNamedSelectionQuery
Create aSelectionQuery
instance for the namedNamedQuery
with the given result type.- Throws:
IllegalSelectQueryException
- if the given HQL query is not a select queryUnknownNamedQueryException
- if no query has been defined with the given name
-
createNamedMutationQuery
Create aMutationQuery
instance for the given named insert, update, or delete HQL query. The named query might be defined as HQL) or native-SQL.- Throws:
IllegalMutationQueryException
- if the given HQL query is a select queryUnknownNamedQueryException
- if no query has been defined with the given name
-
getNamedQuery
Deprecated.Create aQuery
instance for the named query.- Parameters:
queryName
- the name of a predefined named query- Returns:
- The
Query
instance for manipulation and execution - Throws:
IllegalArgumentException
- if a query has not been defined with the given name or if the query string is found to be invalid
-
getNamedNativeQuery
Deprecated.Get aNativeQuery
instance for a named native SQL query- Parameters:
name
- The name of the predefined query- Returns:
- The
NativeQuery
instance for manipulation and execution
-
getNamedNativeQuery
Deprecated.Get aNativeQuery
instance for a named native SQL query- Parameters:
name
- The name of the predefined query- Returns:
- The
NativeQuery
instance for manipulation and execution
-
createNamedQuery(String, Class)