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

📄 nativesqlqueryspecification.java

📁 hibernate-3.1.3-all-src.zip 面向对象的访问数据库工具
💻 JAVA
字号:
package org.hibernate.engine.query;

import org.hibernate.loader.custom.SQLQueryReturn;
import org.hibernate.loader.custom.SQLQueryScalarReturn;
import org.hibernate.util.ArrayHelper;

import java.util.Set;
import java.util.Collection;
import java.util.HashSet;
import java.util.Arrays;
import java.util.Collections;

/**
 * Defines the specification or blue-print for a native-sql query.
 * Essentially a simple struct containing the information needed to "translate"
 * a native-sql query and cache that translated representation.  Also used as
 * the key by which the native-sql query plans are cached.
 *
 * @author Steve Ebersole
 */
public class NativeSQLQuerySpecification {
	private final String queryString;
	private final SQLQueryReturn[] sqlQueryReturns;
	private final SQLQueryScalarReturn[] sqlQueryScalarReturns;
	private final Set querySpaces;
	private final int hashCode;

	public NativeSQLQuerySpecification(
			String queryString,
	        SQLQueryReturn[] sqlQueryReturns,
	        SQLQueryScalarReturn[] sqlQueryScalarReturns,
	        Collection querySpaces) {
		this.queryString = queryString;
		this.sqlQueryReturns = sqlQueryReturns;
		this.sqlQueryScalarReturns = sqlQueryScalarReturns;
		if ( querySpaces == null ) {
			this.querySpaces = Collections.EMPTY_SET;
		}
		else {
			Set tmp = new HashSet();
			tmp.addAll( querySpaces );
			this.querySpaces = Collections.unmodifiableSet( tmp );
		}

		// pre-determine and cache the hashcode
		int hashCode = queryString.hashCode();
		hashCode = 29 * hashCode + this.querySpaces.hashCode();
		if ( this.sqlQueryReturns != null ) {
			hashCode = 29 * hashCode + ArrayHelper.toList( this.sqlQueryReturns ).hashCode();
		}
		if ( this.sqlQueryScalarReturns != null ) {
			hashCode = 29 * hashCode + ArrayHelper.toList( this.sqlQueryScalarReturns ).hashCode();
		}
		this.hashCode = hashCode;
	}

	public String getQueryString() {
		return queryString;
	}

	public SQLQueryReturn[] getSqlQueryReturns() {
		return sqlQueryReturns;
	}

	public SQLQueryScalarReturn[] getSqlQueryScalarReturns() {
		return sqlQueryScalarReturns;
	}

	public Set getQuerySpaces() {
		return querySpaces;
	}

	public boolean equals(Object o) {
		if ( this == o ) {
			return true;
		}
		if ( o == null || getClass() != o.getClass() ) {
			return false;
		}

		final NativeSQLQuerySpecification that = ( NativeSQLQuerySpecification ) o;

		return querySpaces.equals( that.querySpaces ) &&
		       queryString.equals( that.queryString ) &&
		       Arrays.equals( sqlQueryReturns, that.sqlQueryReturns ) &&
		       Arrays.equals( sqlQueryScalarReturns, that.sqlQueryScalarReturns );
	}


	public int hashCode() {
		return hashCode;
	}
}

⌨️ 快捷键说明

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