⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractqueryimpl.java

📁 介绍了hibernate的入门有一些基本常用的事例
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
//$Id: AbstractQueryImpl.java,v 1.32 2005/04/13 07:37:49 oneovthafew Exp $package org.hibernate.impl;import java.io.Serializable;import java.math.BigDecimal;import java.math.BigInteger;import java.util.ArrayList;import java.util.Arrays;import java.util.Calendar;import java.util.Collection;import java.util.Date;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Locale;import java.util.Map;import java.util.Set;import java.util.StringTokenizer;import org.hibernate.CacheMode;import org.hibernate.FlushMode;import org.hibernate.Hibernate;import org.hibernate.HibernateException;import org.hibernate.MappingException;import org.hibernate.NonUniqueResultException;import org.hibernate.PropertyNotFoundException;import org.hibernate.Query;import org.hibernate.QueryException;import org.hibernate.engine.QueryParameters;import org.hibernate.engine.RowSelection;import org.hibernate.engine.SessionImplementor;import org.hibernate.engine.TypedValue;import org.hibernate.hql.classic.ParserHelper;import org.hibernate.property.Getter;import org.hibernate.proxy.HibernateProxyHelper;import org.hibernate.type.SerializableType;import org.hibernate.type.Type;import org.hibernate.type.TypeFactory;import org.hibernate.util.ArrayHelper;import org.hibernate.util.MarkerObject;import org.hibernate.util.ReflectHelper;import org.hibernate.util.StringHelper;/** * Abstract implementation of the Query interface * @author Gavin King, Max Andersen */public abstract class AbstractQueryImpl implements Query {	private static final Object UNSET_PARAMETER = new MarkerObject("<unset parameter>");	private static final Object UNSET_TYPE = new MarkerObject("<unset type>");	private String queryString;	private final SessionImplementor session;	private RowSelection selection;	private List values = new ArrayList(4);	private List types = new ArrayList(4);	private int positionalParameterCount = 0;	private Set actualNamedParameters = new HashSet(4);	private Map namedParameters = new HashMap(4);	private Map namedParameterLists = new HashMap(4);	private boolean cacheable;	private String cacheRegion;	private String comment;	private FlushMode flushMode;	private CacheMode cacheMode;	private FlushMode sessionFlushMode;	private CacheMode sessionCacheMode;	private Serializable collectionKey;	private boolean readOnly;	public AbstractQueryImpl(String queryString, FlushMode flushMode, SessionImplementor session) {		this.session = session;		this.queryString = queryString;		this.selection = new RowSelection();		this.flushMode = flushMode;		this.cacheMode = null;		initParameterBookKeeping();	}	public final String getQueryString() {		return queryString;	}		public Query setFlushMode(FlushMode flushMode) {		this.flushMode = flushMode;		return this;	}		public Query setCacheMode(CacheMode cacheMode) {		this.cacheMode = cacheMode;		return this;	}		protected Map getNamedParams() {		return new HashMap(namedParameters);	}	protected void verifyParameters() throws QueryException {		verifyParameters(false);	}		/**	 * @param reserveFirstParameter if true, the first ? will not be verified since its needed for e.g. callable statements returning a out parameter	 * @throws HibernateException	 */	protected void verifyParameters(boolean reserveFirstParameter) throws HibernateException {		if ( actualNamedParameters.size() != namedParameters.size() + namedParameterLists.size() ) {			Set missingParams = new HashSet(actualNamedParameters);			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 ( positionalParameterCount!=positionalValueSpan ) {			if(reserveFirstParameter && positionalParameterCount-1!=positionalValueSpan) {				throw new QueryException( 				 		"Expected positional parameter count: " + 				 		(positionalParameterCount-1) + 				 		", actual parameters: " + 				 		values, 				 		getQueryString() 				 );			} else if (!reserveFirstParameter) {				throw new QueryException( 				 		"Expected positional parameter count: " + 				 		positionalParameterCount + 				 		", actual parameters: " + 				 		values, 				 		getQueryString() 				 );				}					}	}	protected Map getNamedParameterLists() {		return namedParameterLists;	}	protected List getValues() {		return values;	}	protected List getTypes() {		return types;	}	//TODO: maybe call it getRowSelection() ?	public RowSelection getSelection() {		return selection;	}	public Query setMaxResults(int maxResults) {		selection.setMaxRows( new Integer(maxResults) );		return this;	}	public Query setTimeout(int timeout) {		selection.setTimeout( new Integer(timeout) );		return this;	}	public Query setFetchSize(int fetchSize) {		selection.setFetchSize( new Integer(fetchSize) );		return this;	}	public Query setFirstResult(int firstResult) {		selection.setFirstRow( new Integer(firstResult) );		return this;	}	public Query setParameter(int position, Object val, Type type) {		if ( positionalParameterCount==0 ) {			throw new IllegalArgumentException("No positional parameters in query: " + getQueryString() );		}		if ( position<0 || position>positionalParameterCount-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 Query setString(int position, String val) {		setParameter(position, val, Hibernate.STRING);		return this;	}	public Query setCharacter(int position, char val) {		setParameter(position, new Character(val), Hibernate.CHARACTER);		return this;	}	public Query setBoolean(int position, boolean val) {		setParameter(position, val ? Boolean.TRUE : Boolean.FALSE, Hibernate.BOOLEAN);		return this;	}	public Query setByte(int position, byte val) {		setParameter(position, new Byte(val), Hibernate.BYTE);		return this;	}	public Query setShort(int position, short val) {		setParameter(position, new Short(val), Hibernate.SHORT);		return this;	}	public Query setInteger(int position, int val) {		setParameter(position, new Integer(val), Hibernate.INTEGER);		return this;	}	public Query setLong(int position, long val) {		setParameter(position, new Long(val), Hibernate.LONG);		return this;	}	public Query setFloat(int position, float val) {		setParameter(position, new Float(val), Hibernate.FLOAT);		return this;	}	public Query setDouble(int position, double val) {		setParameter(position, new Double(val), Hibernate.DOUBLE);		return this;	}	public Query setBinary(int position, byte[] val) {		setParameter(position, val, Hibernate.BINARY);		return this;	}	public Query setText(int position, String val) {		setParameter(position, val, Hibernate.TEXT);		return this;	}	public Query setSerializable(int position, Serializable val) {		setParameter(position, val, Hibernate.SERIALIZABLE);		return this;	}	public Query setDate(int position, Date date) {		setParameter(position, date, Hibernate.DATE);		return this;	}	public Query setTime(int position, Date date) {		setParameter(position, date, Hibernate.TIME);		return this;	}	public Query setTimestamp(int position, Date date) {		setParameter(position, date, Hibernate.TIMESTAMP);		return this;	}	public Query setEntity(int position, Object val) {		setParameter( position, val, Hibernate.entity( session.bestGuessEntityName(val) ) );		return this;	}	public Query setLocale(int position, Locale locale) {		setParameter(position, locale, Hibernate.LOCALE);		return this;	}	public Query setCalendar(int position, Calendar calendar) {		setParameter(position, calendar, Hibernate.CALENDAR);		return this;	}	public Query setCalendarDate(int position, Calendar calendar) {		setParameter(position, calendar, Hibernate.CALENDAR_DATE);		return this;	}	public Query setBinary(String name, byte[] val) {		setParameter(name, val, Hibernate.BINARY);		return this;	}	public Query setText(String name, String val) {		setParameter(name, val, Hibernate.TEXT);		return this;	}	public Query setBoolean(String name, boolean val) {		setParameter(name, val ? Boolean.TRUE : Boolean.FALSE, Hibernate.BOOLEAN);		return this;	}	public Query setByte(String name, byte val) {		setParameter(name, new Byte(val), Hibernate.BYTE);		return this;	}	public Query setCharacter(String name, char val) {		setParameter(name, new Character(val), Hibernate.CHARACTER);		return this;	}	public Query setDate(String name, Date date) {		setParameter(name, date, Hibernate.DATE);		return this;	}	public Query setDouble(String name, double val) {		setParameter(name, new Double(val), Hibernate.DOUBLE);		return this;	}	public Query setEntity(String name, Object val) {		setParameter( name, val, Hibernate.entity( session.bestGuessEntityName(val) ) );		return this;	}	public Query setFloat(String name, float val) {		setParameter(name, new Float(val), Hibernate.FLOAT);		return this;	}	public Query setInteger(String name, int val) {		setParameter(name, new Integer(val), Hibernate.INTEGER);		return this;	}	public Query setLocale(String name, Locale locale) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -