当前位置: 首页>>代码示例>>Java>>正文


Java QueryTranslator类代码示例

本文整理汇总了Java中org.hibernate.hql.spi.QueryTranslator的典型用法代码示例。如果您正苦于以下问题:Java QueryTranslator类的具体用法?Java QueryTranslator怎么用?Java QueryTranslator使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


QueryTranslator类属于org.hibernate.hql.spi包,在下文中一共展示了QueryTranslator类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: performExecuteUpdate

import org.hibernate.hql.spi.QueryTranslator; //导入依赖的package包/类
/**
 * Coordinates the efforts to perform an execution across all the included query translators.
 *
 * @param queryParameters The query parameters
 * @param session The session
 *
 * @return The aggregated "affected row" count
 *
 * @throws HibernateException Indicates a problem performing the execution
 */
public int performExecuteUpdate(QueryParameters queryParameters, SessionImplementor session)
		throws HibernateException {
	if ( TRACE_ENABLED ) {
		LOG.tracev( "Execute update: {0}", getSourceQuery() );
		queryParameters.traceParameters( session.getFactory() );
	}
	if ( translators.length != 1 ) {
		LOG.splitQueries( getSourceQuery(), translators.length );
	}
	int result = 0;
	for ( QueryTranslator translator : translators ) {
		result += translator.executeUpdate( queryParameters, session );
	}
	return result;
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:26,代码来源:HQLQueryPlan.java

示例2: getRenderText

import org.hibernate.hql.spi.QueryTranslator; //导入依赖的package包/类
@Override
@SuppressWarnings("unchecked")
public String getRenderText(SessionFactoryImplementor sessionFactory) {
	final Type type = expectedType == null
			? heuristicType
			: Number.class.isAssignableFrom( heuristicType.getReturnedClass() )
			? heuristicType
			: expectedType;
	try {
		final LiteralType literalType = (LiteralType) type;
		final Dialect dialect = factory.getDialect();
		return literalType.objectToSQLString( constantValue, dialect );
	}
	catch (Exception t) {
		throw new QueryException( QueryTranslator.ERROR_CANNOT_FORMAT_LITERAL + constantExpression, t );
	}
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:18,代码来源:JavaConstantNode.java

示例3: getNamedParameterLocations

import org.hibernate.hql.spi.QueryTranslator; //导入依赖的package包/类
/**
 * Returns the locations of all occurrences of the named parameter.
 */
public int[] getNamedParameterLocations(String name) throws QueryException {
	Object o = namedParameters.get( name );
	if ( o == null ) {
		throw new QueryException(
				QueryTranslator.ERROR_NAMED_PARAMETER_DOES_NOT_APPEAR + name,
				queryTranslatorImpl.getQueryString()
		);
	}
	if ( o instanceof Integer ) {
		return new int[] {(Integer) o};
	}
	else {
		return ArrayHelper.toIntArray( (ArrayList) o );
	}
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:19,代码来源:HqlSqlWalker.java

示例4: specificationToWork

import org.hibernate.hql.spi.QueryTranslator; //导入依赖的package包/类
private QueryPlanWork specificationToWork(Specification<T> spec, Pageable pageable) {
    // Unwrap to Hibernate
    final QueryImpl query = getQuery(spec, pageable).unwrap(QueryImpl.class);
    final String hql = query.getQueryString();

    // Create translator
    final QueryTranslator queryTranslator =
            new ASTQueryTranslatorFactory().createQueryTranslator("", hql, Collections.emptyMap(), em.unwrap(SessionImplementor.class).getFactory(), null);
    queryTranslator.compile(Collections.emptyMap(), false);

    // Get translated query and parameters
    final String sql = queryTranslator.getSQLString();
    final Object[] parameters = translateParameters(query, queryTranslator);

    // Done
    return new QueryPlanWork(sql, parameters);
}
 
开发者ID:MinBZK,项目名称:OperatieBRP,代码行数:18,代码来源:CustomSimpleQuerycostJpaRepository.java

示例5: toSql

import org.hibernate.hql.spi.QueryTranslator; //导入依赖的package包/类
/**
 * Do not use in production code! Only for testing purposes only. Used for example during query engine upgrade.
 * Method provides translation from hibernate HQL query to plain SQL string query.
 *
 * @param sessionFactory
 * @param hqlQueryText
 * @return SQL string, null if hqlQueryText parameter is empty.
 */
public static String toSql(SessionFactory sessionFactory, String hqlQueryText) {
    Validate.notNull(sessionFactory, "Session factory must not be null.");

    if (StringUtils.isEmpty(hqlQueryText)) {
        return null;
    }

    final QueryTranslatorFactory translatorFactory = new ASTQueryTranslatorFactory();
    final SessionFactoryImplementor factory =
            (SessionFactoryImplementor) sessionFactory;
    final QueryTranslator translator = translatorFactory.
            createQueryTranslator(
                    hqlQueryText,
                    hqlQueryText,
                    Collections.EMPTY_MAP, factory, null
            );
    translator.compile(Collections.EMPTY_MAP, false);
    return translator.getSQLString();
}
 
开发者ID:Pardus-Engerek,项目名称:engerek,代码行数:28,代码来源:HibernateToSqlTranslator.java

示例6: createQueryTranslator

import org.hibernate.hql.spi.QueryTranslator; //导入依赖的package包/类
@Override
public QueryTranslator createQueryTranslator(
		String queryIdentifier,
		String queryString,
		Map filters,
		SessionFactoryImplementor factory,
		EntityGraphQueryHint entityGraphQueryHint) {
	return new QueryTranslatorImpl( queryIdentifier, queryString, filters, factory, entityGraphQueryHint );
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:10,代码来源:ASTQueryTranslatorFactory.java

示例7: setFetch

import org.hibernate.hql.spi.QueryTranslator; //导入依赖的package包/类
public void setFetch(boolean fetch) {
	this.fetch = fetch;
	// Fetch can't be used with scroll() or iterate().
	if ( fetch && getWalker().isShallowQuery() ) {
		throw new QueryException( QueryTranslator.ERROR_CANNOT_FETCH_WITH_ITERATE );
	}
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:8,代码来源:FromElement.java

示例8: createQueryTranslator

import org.hibernate.hql.spi.QueryTranslator; //导入依赖的package包/类
/**
 * @see QueryTranslatorFactory#createQueryTranslator
 */
public QueryTranslator createQueryTranslator(
		String queryIdentifier,
        String queryString,
        Map filters,
        SessionFactoryImplementor factory,
        EntityGraphQueryHint entityGraphQueryHint) {
	if (entityGraphQueryHint != null) {
		throw new QueryException( "EntityGraphs cannot be applied queries using the classic QueryTranslator!" );
	}
	return new QueryTranslatorImpl( queryIdentifier, queryString, filters, factory );
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:15,代码来源:ClassicQueryTranslatorFactory.java

示例9: getPositionParametersMap

import org.hibernate.hql.spi.QueryTranslator; //导入依赖的package包/类
private Map<Integer, Object> getPositionParametersMap(QueryTranslator translator, Map<String, Object> parametersMap)
{
	Map<Integer, Object> positionParametersMap = new HashMap<Integer, Object>();
	ParameterTranslations parameterTranslations = translator.getParameterTranslations();
	for (Entry<String, Object> parameter : parametersMap.entrySet())
	{
		String name = parameter.getKey();
		for (int position : parameterTranslations.getNamedParameterSqlLocations(name))
		{
			positionParametersMap.put(position + 1, parameter.getValue());
			// Note that the +1 on the position is needed because of a mismatch between 0-based and 1-based indexing of both APIs.
		}
	}
	return positionParametersMap;
}
 
开发者ID:iaunzu,项目名称:strqlbuilder,代码行数:16,代码来源:StrQLBuilder.java

示例10: HQLQueryPlan

import org.hibernate.hql.spi.QueryTranslator; //导入依赖的package包/类
@SuppressWarnings("unchecked")
protected HQLQueryPlan(
		String hql,
		String collectionRole,
		boolean shallow,
		Map<String,Filter> enabledFilters,
		SessionFactoryImplementor factory,
		EntityGraphQueryHint entityGraphQueryHint) {
	this.sourceQuery = hql;
	this.shallow = shallow;

	final Set<String> copy = new HashSet<String>();
	copy.addAll( enabledFilters.keySet() );
	this.enabledFilterNames = java.util.Collections.unmodifiableSet( copy );

	final String[] concreteQueryStrings = QuerySplitter.concreteQueries( hql, factory );
	final int length = concreteQueryStrings.length;
	this.translators = new QueryTranslator[length];

	final List<String> sqlStringList = new ArrayList<String>();
	final Set<Serializable> combinedQuerySpaces = new HashSet<Serializable>();

	final boolean hasCollectionRole = (collectionRole == null);
	final Map querySubstitutions = factory.getSettings().getQuerySubstitutions();
	final QueryTranslatorFactory queryTranslatorFactory = factory.getSettings().getQueryTranslatorFactory();

	for ( int i=0; i<length; i++ ) {
		if ( hasCollectionRole ) {
			translators[i] = queryTranslatorFactory
					.createQueryTranslator( hql, concreteQueryStrings[i], enabledFilters, factory, entityGraphQueryHint );
			translators[i].compile( querySubstitutions, shallow );
		}
		else {
			translators[i] = queryTranslatorFactory
					.createFilterTranslator( hql, concreteQueryStrings[i], enabledFilters, factory );
			( (FilterTranslator) translators[i] ).compile( collectionRole, querySubstitutions, shallow );
		}
		combinedQuerySpaces.addAll( translators[i].getQuerySpaces() );
		sqlStringList.addAll( translators[i].collectSqlStrings() );
	}

	this.sqlStrings = ArrayHelper.toStringArray( sqlStringList );
	this.querySpaces = combinedQuerySpaces;

	if ( length == 0 ) {
		parameterMetadata = new ParameterMetadata( null, null );
		returnMetadata = null;
	}
	else {
		this.parameterMetadata = buildParameterMetadata( translators[0].getParameterTranslations(), hql );
		if ( translators[0].isManipulationStatement() ) {
			returnMetadata = null;
		}
		else {
			final Type[] types = ( length > 1 ) ? new Type[translators[0].getReturnTypes().length] : translators[0].getReturnTypes();
			returnMetadata = new ReturnMetadata( translators[0].getReturnAliases(), types );
		}
	}
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:60,代码来源:HQLQueryPlan.java

示例11: performList

import org.hibernate.hql.spi.QueryTranslator; //导入依赖的package包/类
/**
 * Coordinates the efforts to perform a list across all the included query translators.
 *
 * @param queryParameters The query parameters
 * @param session The session
 *
 * @return The query result list
 *
 * @throws HibernateException Indicates a problem performing the query
 */
@SuppressWarnings("unchecked")
public List performList(
		QueryParameters queryParameters,
		SessionImplementor session) throws HibernateException {
	if ( TRACE_ENABLED ) {
		LOG.tracev( "Find: {0}", getSourceQuery() );
		queryParameters.traceParameters( session.getFactory() );
	}

	final RowSelection rowSelection = queryParameters.getRowSelection();
	final boolean hasLimit = rowSelection != null
			&& rowSelection.definesLimits();
	final boolean needsLimit = hasLimit && translators.length > 1;

	final QueryParameters queryParametersToUse;
	if ( needsLimit ) {
		LOG.needsLimit();
		final RowSelection selection = new RowSelection();
		selection.setFetchSize( queryParameters.getRowSelection().getFetchSize() );
		selection.setTimeout( queryParameters.getRowSelection().getTimeout() );
		queryParametersToUse = queryParameters.createCopyUsing( selection );
	}
	else {
		queryParametersToUse = queryParameters;
	}

	final int guessedResultSize = guessResultSize( rowSelection );
	final List combinedResults = new ArrayList( guessedResultSize );
	final IdentitySet distinction = new IdentitySet( guessedResultSize );
	int includedCount = -1;
	translator_loop:
	for ( QueryTranslator translator : translators ) {
		final List tmp = translator.list( session, queryParametersToUse );
		if ( needsLimit ) {
			// NOTE : firstRow is zero-based
			final int first = queryParameters.getRowSelection().getFirstRow() == null
					? 0
					: queryParameters.getRowSelection().getFirstRow();
			final int max = queryParameters.getRowSelection().getMaxRows() == null
					? -1
					: queryParameters.getRowSelection().getMaxRows();
			for ( final Object result : tmp ) {
				if ( !distinction.add( result ) ) {
					continue;
				}
				includedCount++;
				if ( includedCount < first ) {
					continue;
				}
				combinedResults.add( result );
				if ( max >= 0 && includedCount > max ) {
					// break the outer loop !!!
					break translator_loop;
				}
			}
		}
		else {
			combinedResults.addAll( tmp );
		}
	}
	return combinedResults;
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:73,代码来源:HQLQueryPlan.java

示例12: getTranslators

import org.hibernate.hql.spi.QueryTranslator; //导入依赖的package包/类
/**
 * Access to the underlying translators associated with this query
 *
 * @return The translators
 */
public QueryTranslator[] getTranslators() {
	final QueryTranslator[] copy = new QueryTranslator[translators.length];
	System.arraycopy( translators, 0, copy, 0, copy.length );
	return copy;
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:11,代码来源:HQLQueryPlan.java

示例13: setConstantValue

import org.hibernate.hql.spi.QueryTranslator; //导入依赖的package包/类
private void setConstantValue(DotNode node, String text, Object value) {
	if ( LOG.isDebugEnabled() ) {
		LOG.debugf( "setConstantValue() %s -> %s %s", text, value, value.getClass().getName() );
	}
	// Chop off the rest of the tree.
	node.setFirstChild( null );
	if ( value instanceof String ) {
		node.setType( SqlTokenTypes.QUOTED_STRING );
	}
	else if ( value instanceof Character ) {
		node.setType( SqlTokenTypes.QUOTED_STRING );
	}
	else if ( value instanceof Byte ) {
		node.setType( SqlTokenTypes.NUM_INT );
	}
	else if ( value instanceof Short ) {
		node.setType( SqlTokenTypes.NUM_INT );
	}
	else if ( value instanceof Integer ) {
		node.setType( SqlTokenTypes.NUM_INT );
	}
	else if ( value instanceof Long ) {
		node.setType( SqlTokenTypes.NUM_LONG );
	}
	else if ( value instanceof Double ) {
		node.setType( SqlTokenTypes.NUM_DOUBLE );
	}
	else if ( value instanceof Float ) {
		node.setType( SqlTokenTypes.NUM_FLOAT );
	}
	else {
		node.setType( SqlTokenTypes.CONSTANT );
	}
	Type type;
	try {
		type = walker.getSessionFactoryHelper().getFactory().getTypeResolver().heuristicType(
				value.getClass().getName()
		);
	}
	catch (MappingException me) {
		throw new QueryException( me );
	}
	if ( type == null ) {
		throw new QueryException( QueryTranslator.ERROR_CANNOT_DETERMINE_TYPE + node.getText() );
	}
	try {
		LiteralType literalType = (LiteralType) type;
		Dialect dialect = walker.getSessionFactoryHelper().getFactory().getDialect();
		//noinspection unchecked
		node.setText( literalType.objectToSQLString( value, dialect ) );
	}
	catch (Exception e) {
		throw new QueryException( QueryTranslator.ERROR_CANNOT_FORMAT_LITERAL + node.getText(), e );
	}
	node.setDataType( type );
	node.setResolvedConstant( text );
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:58,代码来源:LiteralProcessor.java

示例14: doToken

import org.hibernate.hql.spi.QueryTranslator; //导入依赖的package包/类
private void doToken(String token, QueryTranslatorImpl q) throws QueryException {
	if ( q.isName( StringHelper.root( token ) ) ) { //path expression
		doPathExpression( q.unalias( token ), q );
	}
	else if ( token.startsWith( ParserHelper.HQL_VARIABLE_PREFIX ) ) { //named query parameter
		q.addNamedParameter( token.substring( 1 ) );
		appendToken( q, "?" );
	}
	else {
		Queryable persister = q.getEntityPersisterUsingImports( token );
		if ( persister != null ) { // the name of a class
			final String discrim = persister.getDiscriminatorSQLValue();
			if ( InFragment.NULL.equals(discrim) || InFragment.NOT_NULL.equals(discrim) ) {
				throw new QueryException( "subclass test not allowed for null or not null discriminator" );
			}
			else {
				appendToken( q, discrim );
			}
		}
		else {
			Object constant;
			if (
					token.indexOf( '.' ) > -1 &&
					( constant = ReflectHelper.getConstantValue( token ) ) != null
			) {
				Type type;
				try {
					type = q.getFactory().getTypeResolver().heuristicType( constant.getClass().getName() );
				}
				catch ( MappingException me ) {
					throw new QueryException( me );
				}
				if ( type == null ) throw new QueryException( QueryTranslator.ERROR_CANNOT_DETERMINE_TYPE + token );
				try {
					appendToken( q, ( ( LiteralType ) type ).objectToSQLString( constant, q.getFactory().getDialect() ) );
				}
				catch ( Exception e ) {
					throw new QueryException( QueryTranslator.ERROR_CANNOT_FORMAT_LITERAL + token, e );
				}
			}
			else { //anything else

				String negatedToken = negated ? ( String ) NEGATIONS.get( token.toLowerCase() ) : null;
				if ( negatedToken != null && ( !betweenSpecialCase || !"or".equals( negatedToken ) ) ) {
					appendToken( q, negatedToken );
				}
				else {
					appendToken( q, token );
				}
			}
		}
	}
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:54,代码来源:WhereParser.java

示例15: getCountQuery

import org.hibernate.hql.spi.QueryTranslator; //导入依赖的package包/类
@Override
protected TypedQuery<Long> getCountQuery(final Specification<T> spec) {
    final CriteriaBuilder builder = em.getCriteriaBuilder();
    final CriteriaQuery<T> criteria = builder.createQuery(getDomainClass());
    final Root<T> root = applySpecificationToQueryCriteria(spec, criteria);
    criteria.select(root);
    final TypedQuery<T> query = em.createQuery(criteria);

    
    final AbstractQueryImpl hibernateQuery = query.unwrap(AbstractQueryImpl.class);
    @SuppressWarnings("unchecked")
    final Map<String, TypedValue> pNamedParameters = (Map<String, TypedValue>) getField(hibernateQuery, AbstractQueryImpl.class, "namedParameters");

    final String hql = hibernateQuery.getQueryString();

    final ASTQueryTranslatorFactory queryTranslatorFactory = new ASTQueryTranslatorFactory();
    final SessionImplementor hibernateSession = em.unwrap(SessionImplementor.class);
    final QueryTranslator queryTranslator =
            queryTranslatorFactory.createQueryTranslator("", hql, Collections.emptyMap(), hibernateSession.getFactory(), null);
    queryTranslator.compile(Collections.emptyMap(), false);
    final String sql = queryTranslator.getSQLString();
    final ParameterTranslations paramTranslations = queryTranslator.getParameterTranslations();

    final String countSql = String.format("select count(*) from (%s limit %d) as sqry", sql, maximumRecords + 1);

    final Query nativeQuery = em.createNativeQuery(countSql);

    
    final AbstractQueryImpl resultQuery = nativeQuery.unwrap(AbstractQueryImpl.class);

    if (pNamedParameters != null) {
        for (final Entry<String, TypedValue> entry : pNamedParameters.entrySet()) {
            for (final int index : paramTranslations.getNamedParameterSqlLocations(entry.getKey())) {

                resultQuery.setParameter(index, entry.getValue().getValue(), entry.getValue().getType());
            }
        }
    }

    return new CustomCountQueryWrapper(nativeQuery);
}
 
开发者ID:MinBZK,项目名称:OperatieBRP,代码行数:42,代码来源:CustomSimpleMaxedJpaRepository.java


注:本文中的org.hibernate.hql.spi.QueryTranslator类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。