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

📄 criteriaquerytranslator.java

📁 hibernate 开源框架的代码 jar包希望大家能喜欢
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		}		return new QueryParameters(				typeArray,		        valueArray,		        lockModes,		        selection,		        rootCriteria.getCacheable(),		        rootCriteria.getCacheRegion(),		        rootCriteria.getComment(),		        rootCriteria.isLookupByNaturalKey(),		        rootCriteria.getResultTransformer()		);	}	public boolean hasProjection() {		return rootCriteria.getProjection() != null;	}	public String getGroupBy() {		if ( rootCriteria.getProjection().isGrouped() ) {			return rootCriteria.getProjection()					.toGroupSqlString( rootCriteria.getProjectionCriteria(), this );		}		else {			return "";		}	}	public String getSelect() {		return rootCriteria.getProjection().toSqlString(				rootCriteria.getProjectionCriteria(),		        0,		        this		);	}	public Type[] getProjectedTypes() {		return rootCriteria.getProjection().getTypes( rootCriteria, this );	}	public String[] getProjectedColumnAliases() {		return rootCriteria.getProjection().getColumnAliases( 0 );	}	public String[] getProjectedAliases() {		return rootCriteria.getProjection().getAliases();	}	public String getWhereCondition() {		StringBuffer condition = new StringBuffer( 30 );		Iterator criterionIterator = rootCriteria.iterateExpressionEntries();		while ( criterionIterator.hasNext() ) {			CriteriaImpl.CriterionEntry entry = ( CriteriaImpl.CriterionEntry ) criterionIterator.next();			String sqlString = entry.getCriterion().toSqlString( entry.getCriteria(), this );			condition.append( sqlString );			if ( criterionIterator.hasNext() ) {				condition.append( " and " );			}		}		return condition.toString();	}	public String getOrderBy() {		StringBuffer orderBy = new StringBuffer( 30 );		Iterator criterionIterator = rootCriteria.iterateOrderings();		while ( criterionIterator.hasNext() ) {			CriteriaImpl.OrderEntry oe = ( CriteriaImpl.OrderEntry ) criterionIterator.next();			orderBy.append( oe.getOrder().toSqlString( oe.getCriteria(), this ) );			if ( criterionIterator.hasNext() ) {				orderBy.append( ", " );			}		}		return orderBy.toString();	}	public SessionFactoryImplementor getFactory() {		return sessionFactory;	}	public String getSQLAlias(Criteria criteria) {		return ( String ) criteriaSQLAliasMap.get( criteria );	}	public String getEntityName(Criteria criteria) {		return ( String ) criteriaEntityNames.get( criteria );	}	public String getColumn(Criteria criteria, String propertyName) {		String[] cols = getColumns( propertyName, criteria );		if ( cols.length != 1 ) {			throw new QueryException( "property does not map to a single column: " + propertyName );		}		return cols[0];	}	/**	 * Get the names of the columns constrained	 * by this criterion.	 */	public String[] getColumnsUsingProjection(			Criteria subcriteria,	        String propertyName) throws HibernateException {		//first look for a reference to a projection alias		final Projection projection = rootCriteria.getProjection();		String[] projectionColumns = projection == null ?		                             null :		                             projection.getColumnAliases( propertyName, 0 );		if ( projectionColumns == null ) {			//it does not refer to an alias of a projection,			//look for a property			try {				return getColumns( propertyName, subcriteria );			}			catch ( HibernateException he ) {				//not found in inner query , try the outer query				if ( outerQueryTranslator != null ) {					return outerQueryTranslator.getColumnsUsingProjection( subcriteria, propertyName );				}				else {					throw he;				}			}		}		else {			//it refers to an alias of a projection			return projectionColumns;		}	}	public String[] getIdentifierColumns(Criteria subcriteria) {		String[] idcols =				( ( Loadable ) getPropertyMapping( getEntityName( subcriteria ) ) ).getIdentifierColumnNames();		return StringHelper.qualify( getSQLAlias( subcriteria ), idcols );	}	public Type getIdentifierType(Criteria subcriteria) {		return ( ( Loadable ) getPropertyMapping( getEntityName( subcriteria ) ) ).getIdentifierType();	}	public TypedValue getTypedIdentifierValue(Criteria subcriteria, Object value) {		final Loadable loadable = ( Loadable ) getPropertyMapping( getEntityName( subcriteria ) );		return new TypedValue(				loadable.getIdentifierType(),		        value,		        EntityMode.POJO		);	}	private String[] getColumns(			String propertyName,	        Criteria subcriteria) throws HibernateException {		return getPropertyMapping( getEntityName( subcriteria, propertyName ) )				.toColumns(						getSQLAlias( subcriteria, propertyName ),				        getPropertyName( propertyName )				);	}	public Type getTypeUsingProjection(Criteria subcriteria, String propertyName)			throws HibernateException {		//first look for a reference to a projection alias		final Projection projection = rootCriteria.getProjection();		Type[] projectionTypes = projection == null ?		                         null :		                         projection.getTypes( propertyName, subcriteria, this );		if ( projectionTypes == null ) {			try {				//it does not refer to an alias of a projection,				//look for a property				return getType( subcriteria, propertyName );			}			catch ( HibernateException he ) {				//not found in inner query , try the outer query				if ( outerQueryTranslator != null ) {					return outerQueryTranslator.getType( subcriteria, propertyName );				}				else {					throw he;				}			}		}		else {			if ( projectionTypes.length != 1 ) {				//should never happen, i think				throw new QueryException( "not a single-length projection: " + propertyName );			}			return projectionTypes[0];		}	}	public Type getType(Criteria subcriteria, String propertyName)			throws HibernateException {		return getPropertyMapping( getEntityName( subcriteria, propertyName ) )				.toType( getPropertyName( propertyName ) );	}	/**	 * Get the a typed value for the given property value.	 */	public TypedValue getTypedValue(Criteria subcriteria, String propertyName, Object value)			throws HibernateException {		// Detect discriminator values...		if ( value instanceof Class ) {			Class entityClass = ( Class ) value;			Queryable q = SessionFactoryHelper.findQueryableUsingImports( sessionFactory, entityClass.getName() );			if ( q != null ) {				Type type = q.getDiscriminatorType();				String stringValue = q.getDiscriminatorSQLValue();				// Convert the string value into the proper type.				if ( type instanceof NullableType ) {					NullableType nullableType = ( NullableType ) type;					value = nullableType.fromStringValue( stringValue );				}				else {					throw new QueryException( "Unsupported discriminator type " + type );				}				return new TypedValue(						type,				        value,				        EntityMode.POJO				);			}		}		// Otherwise, this is an ordinary value.		return new TypedValue(				getTypeUsingProjection( subcriteria, propertyName ),		        value,		        EntityMode.POJO		);	}	private PropertyMapping getPropertyMapping(String entityName)			throws MappingException {		return ( PropertyMapping ) sessionFactory.getEntityPersister( entityName );	}	//TODO: use these in methods above	public String getEntityName(Criteria subcriteria, String propertyName) {		if ( propertyName.indexOf( '.' ) > 0 ) {			String root = StringHelper.root( propertyName );			Criteria crit = getAliasedCriteria( root );			if ( crit != null ) {				return getEntityName( crit );			}		}		return getEntityName( subcriteria );	}	public String getSQLAlias(Criteria criteria, String propertyName) {		if ( propertyName.indexOf( '.' ) > 0 ) {			String root = StringHelper.root( propertyName );			Criteria subcriteria = getAliasedCriteria( root );			if ( subcriteria != null ) {				return getSQLAlias( subcriteria );			}		}		return getSQLAlias( criteria );	}	public String getPropertyName(String propertyName) {		if ( propertyName.indexOf( '.' ) > 0 ) {			String root = StringHelper.root( propertyName );			Criteria crit = getAliasedCriteria( root );			if ( crit != null ) {				return propertyName.substring( root.length() + 1 );			}		}		return propertyName;	}}

⌨️ 快捷键说明

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