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

📄 querykey.java

📁 一个Java持久层类库
💻 JAVA
字号:
//$Id: QueryKey.java 9636 2006-03-16 14:14:48Z max.andersen@jboss.com $package org.hibernate.cache;import java.io.Serializable;import java.util.Map;import java.util.Set;import org.hibernate.EntityMode;import org.hibernate.engine.QueryParameters;import org.hibernate.engine.RowSelection;import org.hibernate.transform.ResultTransformer;import org.hibernate.type.Type;import org.hibernate.util.EqualsHelper;/** * A key that identifies a particular query with bound parameter values * @author Gavin King */public class QueryKey implements Serializable {	private final String sqlQueryString;	private final Type[] types;	private final Object[] values;	private final Integer firstRow;	private final Integer maxRows;	private final Map namedParameters;	private final EntityMode entityMode;	private final Set filters;	private final int hashCode;		// the user provided resulttransformer, not the one used with "select new". Here to avoid mangling transformed/non-transformed results.	private final ResultTransformer customTransformer;		public QueryKey(String queryString, QueryParameters queryParameters, Set filters, EntityMode entityMode) {		this.sqlQueryString = queryString;		this.types = queryParameters.getPositionalParameterTypes();		this.values = queryParameters.getPositionalParameterValues();		RowSelection selection = queryParameters.getRowSelection();		if (selection!=null) {			firstRow = selection.getFirstRow();			maxRows = selection.getMaxRows();		}		else {			firstRow = null;			maxRows = null;		}		this.namedParameters = queryParameters.getNamedParameters();		this.entityMode = entityMode;		this.filters = filters;		this.customTransformer = queryParameters.getResultTransformer();		this.hashCode = getHashCode();	}		public boolean equals(Object other) {		QueryKey that = (QueryKey) other;		if ( !sqlQueryString.equals(that.sqlQueryString) ) return false;		if ( !EqualsHelper.equals(firstRow, that.firstRow) || !EqualsHelper.equals(maxRows, that.maxRows) ) return false;		if ( !EqualsHelper.equals(customTransformer, that.customTransformer) ) return false;		if (types==null) {			if (that.types!=null) return false;		}		else {			if (that.types==null) return false;			if ( types.length!=that.types.length ) return false;			for ( int i=0; i<types.length; i++ ) {				if ( types[i].getReturnedClass() != that.types[i].getReturnedClass() ) return false;				if ( !types[i].isEqual( values[i], that.values[i], entityMode ) ) return false;			}		}		if ( !EqualsHelper.equals(filters, that.filters) ) return false;		if ( !EqualsHelper.equals(namedParameters, that.namedParameters) ) return false;		return true;	}		public int hashCode() {		return hashCode;	}		private int getHashCode() {		int result = 13;		result = 37 * result + ( firstRow==null ? 0 : firstRow.hashCode() );		result = 37 * result + ( maxRows==null ? 0 : maxRows.hashCode() );		for ( int i=0; i<values.length; i++ ) {			result = 37 * result + ( values[i]==null ? 0 : types[i].getHashCode( values[i], entityMode ) );		}		result = 37 * result + ( namedParameters==null ? 0 : namedParameters.hashCode() );		result = 37 * result + ( filters==null ? 0 : filters.hashCode() );		result = 37 * result + ( customTransformer==null ? 0 : customTransformer.hashCode() );		result = 37 * result + sqlQueryString.hashCode();		return result;	}	public String toString() {		StringBuffer buf = new StringBuffer()			.append("sql: ")			.append(sqlQueryString);		if (values!=null) {			buf.append("; parameters: ");			for (int i=0; i<values.length; i++) {				buf.append( values[i] )					.append(", ");			}		}		if (namedParameters!=null) {			buf.append("; named parameters: ")				.append(namedParameters);		}		if (filters!=null) {			buf.append("; filters: ")				.append(filters);		}		if (firstRow!=null) buf.append("; first row: ").append(firstRow);		if (maxRows!=null) buf.append("; max rows: ").append(maxRows);		if (customTransformer!=null) buf.append("; transformer: ").append(customTransformer);		return buf.toString();	}	}

⌨️ 快捷键说明

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