Methods Summary |
---|
protected void | after()
if (sessionFlushMode!=null) {
getSession().setFlushMode(sessionFlushMode);
sessionFlushMode = null;
}
if (sessionCacheMode!=null) {
getSession().setCacheMode(sessionCacheMode);
sessionCacheMode = null;
}
|
protected void | before()
if ( flushMode!=null ) {
sessionFlushMode = getSession().getFlushMode();
getSession().setFlushMode(flushMode);
}
if ( cacheMode!=null ) {
sessionCacheMode = getSession().getCacheMode();
getSession().setCacheMode(cacheMode);
}
|
protected org.hibernate.type.Type | determineType(int paramPosition, java.lang.Object paramValue, org.hibernate.type.Type defaultType)
Type type = parameterMetadata.getOrdinalParameterExpectedType( paramPosition + 1 );
if ( type == null ) {
type = defaultType;
}
return type;
|
protected org.hibernate.type.Type | determineType(int paramPosition, java.lang.Object paramValue)
Type type = parameterMetadata.getOrdinalParameterExpectedType( paramPosition + 1 );
if ( type == null ) {
type = guessType( paramValue );
}
return type;
|
protected org.hibernate.type.Type | determineType(java.lang.String paramName, java.lang.Object paramValue, org.hibernate.type.Type defaultType)
Type type = parameterMetadata.getNamedParameterExpectedType( paramName );
if ( type == null ) {
type = defaultType;
}
return type;
|
protected org.hibernate.type.Type | determineType(java.lang.String paramName, java.lang.Object paramValue)
Type type = parameterMetadata.getNamedParameterExpectedType( paramName );
if ( type == null ) {
type = guessType( paramValue );
}
return type;
|
protected org.hibernate.type.Type | determineType(java.lang.String paramName, java.lang.Class clazz)
Type type = parameterMetadata.getNamedParameterExpectedType( paramName );
if ( type == null ) {
type = guessType( clazz );
}
return type;
|
private java.lang.String | expandParameterList(java.lang.String query, java.lang.String name, org.hibernate.engine.TypedValue typedList, java.util.Map namedParamsCopy)Warning: adds new parameters to the argument by side-effect, as well as
mutating the query string!
Collection vals = (Collection) typedList.getValue();
Type type = typedList.getType();
if ( vals.size() == 1 ) {
// short-circuit for performance...
namedParamsCopy.put( name, new TypedValue( type, vals.iterator().next(), session.getEntityMode() ) );
return query;
}
StringBuffer list = new StringBuffer( 16 );
Iterator iter = vals.iterator();
int i = 0;
boolean isJpaPositionalParam = parameterMetadata.getNamedParameterDescriptor( name ).isJpaStyle();
while ( iter.hasNext() ) {
String alias = ( isJpaPositionalParam ? 'x" + name : name ) + i++ + '_";
namedParamsCopy.put( alias, new TypedValue( type, iter.next(), session.getEntityMode() ) );
list.append( ParserHelper.HQL_VARIABLE_PREFIX ).append( alias );
if ( iter.hasNext() ) {
list.append( ", " );
}
}
String paramPrefix = isJpaPositionalParam ? "?" : ParserHelper.HQL_VARIABLE_PREFIX;
return StringHelper.replace( query, paramPrefix + name, list.toString(), true );
|
protected java.lang.String | expandParameterLists(java.util.Map namedParamsCopy)Warning: adds new parameters to the argument by side-effect, as well as
mutating the query string!
String query = this.queryString;
Iterator iter = namedParameterLists.entrySet().iterator();
while ( iter.hasNext() ) {
Map.Entry me = (Map.Entry) iter.next();
query = expandParameterList( query, (String) me.getKey(), (TypedValue) me.getValue(), namedParamsCopy );
}
return query;
|
protected abstract java.util.Map | getLockModes()
|
protected java.util.Map | getNamedParameterLists()Retreive the value map for any named parameter lists (i.e., for
auto-expansion) bound to this query.
return namedParameterLists;
|
public java.lang.String[] | getNamedParameters()Returns an array representing all named parameter names encountered
during (intial) parsing of the query.
Note initial here means different things depending on whether
this is a native-sql query or an HQL/filter query. For native-sql, a
precursory inspection of the query string is performed specifically to
locate defined parameters. For HQL/filter queries, this is the
information returned from the query-translator. This distinction
holds true for all parameter metadata exposed here.
return ArrayHelper.toStringArray( parameterMetadata.getNamedParameterNames() );
|
protected java.util.Map | getNamedParams()Returns a shallow copy of the named parameter value map.
return new HashMap( namedParameters );
|
public org.hibernate.engine.QueryParameters | getQueryParameters(java.util.Map namedParams)
return new QueryParameters(
typeArray(),
valueArray(),
namedParams,
getLockModes(),
getSelection(),
readOnly,
cacheable,
cacheRegion,
comment,
collectionKey == null ? null : new Serializable[] { collectionKey },
optionalObject,
optionalEntityName,
optionalId,
resultTransformer
);
|
public final java.lang.String | getQueryString()
return queryString;
|
public java.lang.String[] | getReturnAliases()
return session.getFactory().getReturnAliases( queryString );
|
public org.hibernate.type.Type[] | getReturnTypes()
return session.getFactory().getReturnTypes( queryString );
|
protected org.hibernate.engine.RowSelection | getRowSelection()
return selection;
|
public org.hibernate.engine.RowSelection | getSelection()
return selection;
|
org.hibernate.engine.SessionImplementor | getSession()
return session;
|
protected java.util.List | getTypes()Retreives the list of parameter {@link Type type}s bound to this query for
ordinal parameters.
return types;
|
protected java.util.List | getValues()Retreives the list of parameter values bound to this query for
ordinal parameters.
return values;
|
private org.hibernate.type.Type | guessType(java.lang.Object param)
Class clazz = HibernateProxyHelper.getClassWithoutInitializingProxy( param );
return guessType( clazz );
|
private org.hibernate.type.Type | guessType(java.lang.Class clazz)
String typename = clazz.getName();
Type type = TypeFactory.heuristicType(typename);
boolean serializable = type!=null && type instanceof SerializableType;
if (type==null || serializable) {
try {
session.getFactory().getEntityPersister( clazz.getName() );
}
catch (MappingException me) {
if (serializable) {
return type;
}
else {
throw new HibernateException("Could not determine a type for class: " + typename);
}
}
return Hibernate.entity(clazz);
}
else {
return type;
}
|
public boolean | hasNamedParameters()Does this query contain named parameters?
return parameterMetadata.getNamedParameterNames().size() > 0;
|
public boolean | isReadOnly()
return readOnly;
|
private java.lang.String | resolveEntityName(java.lang.Object val)
if ( val == null ) {
throw new IllegalArgumentException( "entity for parameter binding cannot be null" );
}
return session.bestGuessEntityName( val );
|
public org.hibernate.Query | setBigDecimal(int position, java.math.BigDecimal number)
setParameter(position, number, Hibernate.BIG_DECIMAL);
return this;
|
public org.hibernate.Query | setBigDecimal(java.lang.String name, java.math.BigDecimal number)
setParameter(name, number, Hibernate.BIG_DECIMAL);
return this;
|
public org.hibernate.Query | setBigInteger(int position, java.math.BigInteger number)
setParameter(position, number, Hibernate.BIG_INTEGER);
return this;
|
public org.hibernate.Query | setBigInteger(java.lang.String name, java.math.BigInteger number)
setParameter(name, number, Hibernate.BIG_INTEGER);
return this;
|
public org.hibernate.Query | setBinary(int position, byte[] val)
setParameter(position, val, Hibernate.BINARY);
return this;
|
public org.hibernate.Query | setBinary(java.lang.String name, byte[] val)
setParameter(name, val, Hibernate.BINARY);
return this;
|
public org.hibernate.Query | setBoolean(int position, boolean val)
Boolean valueToUse = val ? Boolean.TRUE : Boolean.FALSE;
Type typeToUse = determineType( position, valueToUse, Hibernate.BOOLEAN );
setParameter( position, valueToUse, typeToUse );
return this;
|
public org.hibernate.Query | setBoolean(java.lang.String name, boolean val)
Boolean valueToUse = val ? Boolean.TRUE : Boolean.FALSE;
Type typeToUse = determineType( name, valueToUse, Hibernate.BOOLEAN );
setParameter( name, valueToUse, typeToUse );
return this;
|
public org.hibernate.Query | setByte(int position, byte val)
setParameter(position, new Byte(val), Hibernate.BYTE);
return this;
|
public org.hibernate.Query | setByte(java.lang.String name, byte val)
setParameter(name, new Byte(val), Hibernate.BYTE);
return this;
|
public org.hibernate.Query | setCacheMode(org.hibernate.CacheMode cacheMode)
this.cacheMode = cacheMode;
return this;
|
public org.hibernate.Query | setCacheRegion(java.lang.String cacheRegion)
if (cacheRegion != null)
this.cacheRegion = cacheRegion.trim();
return this;
|
public org.hibernate.Query | setCacheable(boolean cacheable)
this.cacheable = cacheable;
return this;
|
public org.hibernate.Query | setCalendar(int position, java.util.Calendar calendar)
setParameter(position, calendar, Hibernate.CALENDAR);
return this;
|
public org.hibernate.Query | setCalendar(java.lang.String name, java.util.Calendar calendar)
setParameter(name, calendar, Hibernate.CALENDAR);
return this;
|
public org.hibernate.Query | setCalendarDate(int position, java.util.Calendar calendar)
setParameter(position, calendar, Hibernate.CALENDAR_DATE);
return this;
|
public org.hibernate.Query | setCalendarDate(java.lang.String name, java.util.Calendar calendar)
setParameter(name, calendar, Hibernate.CALENDAR_DATE);
return this;
|
public org.hibernate.Query | setCharacter(int position, char val)
setParameter(position, new Character(val), Hibernate.CHARACTER);
return this;
|
public org.hibernate.Query | setCharacter(java.lang.String name, char val)
setParameter(name, new Character(val), Hibernate.CHARACTER);
return this;
|
public org.hibernate.Query | setCollectionKey(java.io.Serializable collectionKey)
this.collectionKey = collectionKey;
return this;
|
public org.hibernate.Query | setComment(java.lang.String comment)
this.comment = comment;
return this;
|
public org.hibernate.Query | setDate(int position, java.util.Date date)
setParameter(position, date, Hibernate.DATE);
return this;
|
public org.hibernate.Query | setDate(java.lang.String name, java.util.Date date)
setParameter(name, date, Hibernate.DATE);
return this;
|
public org.hibernate.Query | setDouble(int position, double val)
setParameter(position, new Double(val), Hibernate.DOUBLE);
return this;
|
public org.hibernate.Query | setDouble(java.lang.String name, double val)
setParameter(name, new Double(val), Hibernate.DOUBLE);
return this;
|
public org.hibernate.Query | setEntity(int position, java.lang.Object val)
setParameter( position, val, Hibernate.entity( resolveEntityName( val ) ) );
return this;
|
public org.hibernate.Query | setEntity(java.lang.String name, java.lang.Object val)
setParameter( name, val, Hibernate.entity( resolveEntityName( val ) ) );
return this;
|
public org.hibernate.Query | setFetchSize(int fetchSize)
selection.setFetchSize( new Integer(fetchSize) );
return this;
|
public org.hibernate.Query | setFirstResult(int firstResult)
selection.setFirstRow( new Integer(firstResult) );
return this;
|
public org.hibernate.Query | setFloat(int position, float val)
setParameter(position, new Float(val), Hibernate.FLOAT);
return this;
|
public org.hibernate.Query | setFloat(java.lang.String name, float val)
setParameter(name, new Float(val), Hibernate.FLOAT);
return this;
|
public org.hibernate.Query | setFlushMode(org.hibernate.FlushMode flushMode)
this.flushMode = flushMode;
return this;
|
public org.hibernate.Query | setInteger(int position, int val)
setParameter(position, new Integer(val), Hibernate.INTEGER);
return this;
|
public org.hibernate.Query | setInteger(java.lang.String name, int val)
setParameter(name, new Integer(val), Hibernate.INTEGER);
return this;
|
public org.hibernate.Query | setLocale(int position, java.util.Locale locale)
setParameter(position, locale, Hibernate.LOCALE);
return this;
|
public org.hibernate.Query | setLocale(java.lang.String name, java.util.Locale locale)
setParameter(name, locale, Hibernate.LOCALE);
return this;
|
public org.hibernate.Query | setLong(int position, long val)
setParameter(position, new Long(val), Hibernate.LONG);
return this;
|
public org.hibernate.Query | setLong(java.lang.String name, long val)
setParameter(name, new Long(val), Hibernate.LONG);
return this;
|
public org.hibernate.Query | setMaxResults(int maxResults)
selection.setMaxRows( new Integer(maxResults) );
return this;
|
public void | setOptionalEntityName(java.lang.String optionalEntityName)
this.optionalEntityName = optionalEntityName;
|
public void | setOptionalId(java.io.Serializable optionalId)
this.optionalId = optionalId;
|
public void | setOptionalObject(java.lang.Object optionalObject)
this.optionalObject = optionalObject;
|
public org.hibernate.Query | setParameter(int position, java.lang.Object val, org.hibernate.type.Type type)
if ( parameterMetadata.getOrdinalParameterCount() == 0 ) {
throw new IllegalArgumentException("No positional parameters in query: " + getQueryString() );
}
if ( position < 0 || position > parameterMetadata.getOrdinalParameterCount() - 1 ) {
throw new IllegalArgumentException("Positional parameter does not exist: " + position + " in query: " + getQueryString() );
}
int size = values.size();
if ( position < size ) {
values.set( position, val );
types.set( position, type );
}
else {
// prepend value and type list with null for any positions before the wanted position.
for ( int i = 0; i < position - size; i++ ) {
values.add( UNSET_PARAMETER );
types.add( UNSET_TYPE );
}
values.add( val );
types.add( type );
}
return this;
|
public org.hibernate.Query | setParameter(java.lang.String name, java.lang.Object val, org.hibernate.type.Type type)
if ( !parameterMetadata.getNamedParameterNames().contains( name ) ) {
throw new IllegalArgumentException("Parameter " + name + " does not exist as a named parameter in [" + getQueryString() + "]");
}
else {
namedParameters.put( name, new TypedValue( type, val, session.getEntityMode() ) );
return this;
}
|
public org.hibernate.Query | setParameter(int position, java.lang.Object val)
if (val == null) {
setParameter( position, val, Hibernate.SERIALIZABLE );
}
else {
setParameter( position, val, determineType( position, val ) );
}
return this;
|
public org.hibernate.Query | setParameter(java.lang.String name, java.lang.Object val)
if (val == null) {
Type type = parameterMetadata.getNamedParameterExpectedType( name );
if ( type == null ) {
type = Hibernate.SERIALIZABLE;
}
setParameter( name, val, type );
}
else {
setParameter( name, val, determineType( name, val ) );
}
return this;
|
public org.hibernate.Query | setParameterList(java.lang.String name, java.util.Collection vals, org.hibernate.type.Type type)
if ( !parameterMetadata.getNamedParameterNames().contains( name ) ) {
throw new IllegalArgumentException("Parameter " + name + " does not exist as a named parameter in [" + getQueryString() + "]");
}
namedParameterLists.put( name, new TypedValue( type, vals, session.getEntityMode() ) );
return this;
|
public org.hibernate.Query | setParameterList(java.lang.String name, java.util.Collection vals)
if ( vals == null ) {
throw new QueryException( "Collection must be not null!" );
}
if( vals.size() == 0 ) {
setParameterList( name, vals, null );
}
else {
setParameterList(name, vals, determineType( name, vals.iterator().next() ) );
}
return this;
|
public org.hibernate.Query | setParameterList(java.lang.String name, java.lang.Object[] vals, org.hibernate.type.Type type)
return setParameterList( name, Arrays.asList(vals), type );
|
public org.hibernate.Query | setParameterList(java.lang.String name, java.lang.Object[] vals)
return setParameterList( name, Arrays.asList(vals) );
|
public org.hibernate.Query | setParameters(java.lang.Object[] values, org.hibernate.type.Type[] types)
this.values = Arrays.asList(values);
this.types = Arrays.asList(types);
return this;
|
public org.hibernate.Query | setProperties(java.util.Map map)
String[] params = getNamedParameters();
for (int i = 0; i < params.length; i++) {
String namedParam = params[i];
final Object object = map.get(namedParam);
if(object==null) {
continue;
}
Class retType = object.getClass();
if ( Collection.class.isAssignableFrom( retType ) ) {
setParameterList( namedParam, ( Collection ) object );
}
else if ( retType.isArray() ) {
setParameterList( namedParam, ( Object[] ) object );
}
else {
setParameter( namedParam, object, determineType( namedParam, retType ) );
}
}
return this;
|
public org.hibernate.Query | setProperties(java.lang.Object bean)
Class clazz = bean.getClass();
String[] params = getNamedParameters();
for (int i = 0; i < params.length; i++) {
String namedParam = params[i];
try {
Getter getter = ReflectHelper.getGetter( clazz, namedParam );
Class retType = getter.getReturnType();
final Object object = getter.get( bean );
if ( Collection.class.isAssignableFrom( retType ) ) {
setParameterList( namedParam, ( Collection ) object );
}
else if ( retType.isArray() ) {
setParameterList( namedParam, ( Object[] ) object );
}
else {
setParameter( namedParam, object, determineType( namedParam, retType ) );
}
}
catch (PropertyNotFoundException pnfe) {
// ignore
}
}
return this;
|
public org.hibernate.Query | setReadOnly(boolean readOnly)
this.readOnly = readOnly;
return this;
|
public org.hibernate.Query | setResultTransformer(org.hibernate.transform.ResultTransformer transformer)
this.resultTransformer = transformer;
return this;
|
public org.hibernate.Query | setSerializable(int position, java.io.Serializable val)
setParameter(position, val, Hibernate.SERIALIZABLE);
return this;
|
public org.hibernate.Query | setSerializable(java.lang.String name, java.io.Serializable val)
setParameter(name, val, Hibernate.SERIALIZABLE);
return this;
|
public org.hibernate.Query | setShort(int position, short val)
setParameter(position, new Short(val), Hibernate.SHORT);
return this;
|
public org.hibernate.Query | setShort(java.lang.String name, short val)
setParameter(name, new Short(val), Hibernate.SHORT);
return this;
|
public org.hibernate.Query | setString(int position, java.lang.String val)
setParameter(position, val, Hibernate.STRING);
return this;
|
public org.hibernate.Query | setString(java.lang.String name, java.lang.String val)
setParameter(name, val, Hibernate.STRING);
return this;
|
public org.hibernate.Query | setText(int position, java.lang.String val)
setParameter(position, val, Hibernate.TEXT);
return this;
|
public org.hibernate.Query | setText(java.lang.String name, java.lang.String val)
setParameter(name, val, Hibernate.TEXT);
return this;
|
public org.hibernate.Query | setTime(int position, java.util.Date date)
setParameter(position, date, Hibernate.TIME);
return this;
|
public org.hibernate.Query | setTime(java.lang.String name, java.util.Date date)
setParameter(name, date, Hibernate.TIME);
return this;
|
public org.hibernate.Query | setTimeout(int timeout)
selection.setTimeout( new Integer(timeout) );
return this;
|
public org.hibernate.Query | setTimestamp(int position, java.util.Date date)
setParameter(position, date, Hibernate.TIMESTAMP);
return this;
|
public org.hibernate.Query | setTimestamp(java.lang.String name, java.util.Date date)
setParameter(name, date, Hibernate.TIMESTAMP);
return this;
|
public java.lang.String | toString()
return StringHelper.unqualify( getClass().getName() ) + '(" + queryString + ')";
|
public org.hibernate.type.Type[] | typeArray()
return ArrayHelper.toTypeArray( getTypes() );
|
static java.lang.Object | uniqueElement(java.util.List list)
int size = list.size();
if (size==0) return null;
Object first = list.get(0);
for ( int i=1; i<size; i++ ) {
if ( list.get(i)!=first ) {
throw new NonUniqueResultException( list.size() );
}
}
return first;
|
public java.lang.Object | uniqueResult()
return uniqueElement( list() );
|
public java.lang.Object[] | valueArray()
return getValues().toArray();
|
protected void | verifyParameters()Perform parameter validation. Used prior to executing the encapsulated
query.
verifyParameters(false);
|
protected void | verifyParameters(boolean reserveFirstParameter)Perform parameter validation. Used prior to executing the encapsulated
query.
if ( parameterMetadata.getNamedParameterNames().size() != namedParameters.size() + namedParameterLists.size() ) {
Set missingParams = new HashSet( parameterMetadata.getNamedParameterNames() );
missingParams.removeAll( namedParameterLists.keySet() );
missingParams.removeAll( namedParameters.keySet() );
throw new QueryException( "Not all named parameters have been set: " + missingParams, getQueryString() );
}
int positionalValueSpan = 0;
for ( int i = 0; i < values.size(); i++ ) {
Object object = types.get( i );
if( values.get( i ) == UNSET_PARAMETER || object == UNSET_TYPE ) {
if ( reserveFirstParameter && i==0 ) {
continue;
}
else {
throw new QueryException( "Unset positional parameter at position: " + i, getQueryString() );
}
}
positionalValueSpan += ( (Type) object ).getColumnSpan( session.getFactory() );
}
if ( parameterMetadata.getOrdinalParameterCount() != positionalValueSpan ) {
if ( reserveFirstParameter && parameterMetadata.getOrdinalParameterCount() - 1 != positionalValueSpan ) {
throw new QueryException(
"Expected positional parameter count: " +
(parameterMetadata.getOrdinalParameterCount()-1) +
", actual parameters: " +
values,
getQueryString()
);
}
else if ( !reserveFirstParameter ) {
throw new QueryException(
"Expected positional parameter count: " +
parameterMetadata.getOrdinalParameterCount() +
", actual parameters: " +
values,
getQueryString()
);
}
}
|