/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* Copyright (c) 2010, Red Hat Inc. or third-party contributors as
* indicated by the @author tags or express copyright attribution
* statements applied by the authors. All third-party contributions are
* distributed under license by Red Hat Inc.
*
* This copyrighted material is made available to anyone wishing to use, modify,
* copy, or redistribute it subject to the terms and conditions of the GNU
* Lesser General Public License, as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this distribution; if not, write to:
* Free Software Foundation, Inc.
* 51 Franklin Street, Fifth Floor
* Boston, MA 02110-1301 USA
*/
package org.hibernate.engine.spi;
import java.util.List;
import java.util.Map;
import org.hibernate.CacheMode;
import org.hibernate.FlushMode;
import org.hibernate.engine.query.spi.sql.NativeSQLQueryReturn;
Definition of a named native SQL query, defined in the mapping metadata.
Author: Max Andersen, Steve Ebersole
/**
* Definition of a named native SQL query, defined in the mapping metadata.
*
* @author Max Andersen
* @author Steve Ebersole
*/
public class NamedSQLQueryDefinition extends NamedQueryDefinition {
private NativeSQLQueryReturn[] queryReturns;
private final List<String> querySpaces;
private final boolean callable;
private String resultSetRef;
This form was initially used to construct a NamedSQLQueryDefinition from the binder code when a the
result-set mapping information is not explicitly provided in the query definition
(i.e., no resultset-mapping used).
Params: - name – The name of named query
- query – The sql query string
- queryReturns – The in-lined query return definitions
- querySpaces – Any specified query spaces (used for auto-flushing)
- cacheable – Whether the query results are cacheable
- cacheRegion – If cacheable, the region into which to store the results
- timeout – A JDBC-level timeout to be applied
- fetchSize – A JDBC-level fetch-size to be applied
- flushMode – The flush mode to use for this query
- cacheMode – The cache mode to use during execution and subsequent result loading
- readOnly – Whether returned entities should be marked as read-only in the session
- comment – Any sql comment to be applied to the query
- parameterTypes – parameter type map
- callable – Does the query string represent a callable object (i.e., proc)
Deprecated: Use NamedSQLQueryDefinitionBuilder
instead.
/**
* This form was initially used to construct a NamedSQLQueryDefinition from the binder code when a the
* result-set mapping information is not explicitly provided in the query definition
* (i.e., no resultset-mapping used).
*
* @param name The name of named query
* @param query The sql query string
* @param queryReturns The in-lined query return definitions
* @param querySpaces Any specified query spaces (used for auto-flushing)
* @param cacheable Whether the query results are cacheable
* @param cacheRegion If cacheable, the region into which to store the results
* @param timeout A JDBC-level timeout to be applied
* @param fetchSize A JDBC-level fetch-size to be applied
* @param flushMode The flush mode to use for this query
* @param cacheMode The cache mode to use during execution and subsequent result loading
* @param readOnly Whether returned entities should be marked as read-only in the session
* @param comment Any sql comment to be applied to the query
* @param parameterTypes parameter type map
* @param callable Does the query string represent a callable object (i.e., proc)
*
* @deprecated Use {@link NamedSQLQueryDefinitionBuilder} instead.
*/
@Deprecated
public NamedSQLQueryDefinition(
String name,
String query,
NativeSQLQueryReturn[] queryReturns,
List<String> querySpaces,
boolean cacheable,
String cacheRegion,
Integer timeout,
Integer fetchSize,
FlushMode flushMode,
CacheMode cacheMode,
boolean readOnly,
String comment,
Map parameterTypes,
boolean callable) {
this(
name,
query,
cacheable,
cacheRegion,
timeout,
fetchSize,
flushMode,
cacheMode,
readOnly,
comment,
parameterTypes,
null, // firstResult
null, // maxResults
null, // resultSetRef
querySpaces,
callable,
queryReturns
);
}
This form was initially used to construct a NamedSQLQueryDefinition from the binder code when a
resultset-mapping reference is used.
Params: - name – The name of named query
- query – The sql query string
- resultSetRef – The resultset-mapping name
- querySpaces – Any specified query spaces (used for auto-flushing)
- cacheable – Whether the query results are cacheable
- cacheRegion – If cacheable, the region into which to store the results
- timeout – A JDBC-level timeout to be applied
- fetchSize – A JDBC-level fetch-size to be applied
- flushMode – The flush mode to use for this query
- cacheMode – The cache mode to use during execution and subsequent result loading
- readOnly – Whether returned entities should be marked as read-only in the session
- comment – Any sql comment to be applied to the query
- parameterTypes – parameter type map
- callable – Does the query string represent a callable object (i.e., proc)
Deprecated: Use NamedSQLQueryDefinitionBuilder
instead.
/**
* This form was initially used to construct a NamedSQLQueryDefinition from the binder code when a
* resultset-mapping reference is used.
*
* @param name The name of named query
* @param query The sql query string
* @param resultSetRef The resultset-mapping name
* @param querySpaces Any specified query spaces (used for auto-flushing)
* @param cacheable Whether the query results are cacheable
* @param cacheRegion If cacheable, the region into which to store the results
* @param timeout A JDBC-level timeout to be applied
* @param fetchSize A JDBC-level fetch-size to be applied
* @param flushMode The flush mode to use for this query
* @param cacheMode The cache mode to use during execution and subsequent result loading
* @param readOnly Whether returned entities should be marked as read-only in the session
* @param comment Any sql comment to be applied to the query
* @param parameterTypes parameter type map
* @param callable Does the query string represent a callable object (i.e., proc)
*
* @deprecated Use {@link NamedSQLQueryDefinitionBuilder} instead.
*/
@Deprecated
public NamedSQLQueryDefinition(
String name,
String query,
String resultSetRef,
List<String> querySpaces,
boolean cacheable,
String cacheRegion,
Integer timeout,
Integer fetchSize,
FlushMode flushMode,
CacheMode cacheMode,
boolean readOnly,
String comment,
Map parameterTypes,
boolean callable) {
this(
name,
query,
cacheable,
cacheRegion,
timeout,
fetchSize,
flushMode,
cacheMode,
readOnly,
comment,
parameterTypes,
null, // firstResult
null, // maxResults
resultSetRef,
querySpaces,
callable,
null // queryReturns
);
}
NamedSQLQueryDefinition(
String name,
String query,
boolean cacheable,
String cacheRegion,
Integer timeout,
Integer fetchSize,
FlushMode flushMode,
CacheMode cacheMode,
boolean readOnly,
String comment,
Map parameterTypes,
Integer firstResult,
Integer maxResults,
String resultSetRef,
List<String> querySpaces,
boolean callable,
NativeSQLQueryReturn[] queryReturns) {
super(
name,
query.trim(), /* trim done to workaround stupid oracle bug that cant handle whitespaces before a { in a sp */
cacheable,
cacheRegion,
timeout,
null, // lockOptions
fetchSize,
flushMode,
cacheMode,
readOnly,
comment,
parameterTypes,
firstResult,
maxResults
);
this.resultSetRef = resultSetRef;
this.querySpaces = querySpaces;
this.callable = callable;
this.queryReturns = queryReturns;
}
public NativeSQLQueryReturn[] getQueryReturns() {
return queryReturns;
}
public List<String> getQuerySpaces() {
return querySpaces;
}
public boolean isCallable() {
return callable;
}
public String getResultSetRef() {
return resultSetRef;
}
@Override
public NamedSQLQueryDefinition makeCopy(String name) {
return new NamedSQLQueryDefinition(
name,
getQuery(),
isCacheable(),
getCacheRegion(),
getTimeout(),
getFetchSize(),
getFlushMode(),
getCacheMode(),
isReadOnly(),
getComment(),
getParameterTypes(),
getFirstResult(),
getMaxResults(),
getResultSetRef(),
getQuerySpaces(),
isCallable(),
getQueryReturns()
);
}
}