Java 类org.hibernate.hql.spi.QueryTranslatorFactory 实例源码

项目:engerek    文件:HibernateToSqlTranslator.java   
/**
 * 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();
}
项目:midpoint    文件:HibernateToSqlTranslator.java   
/**
 * 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();
}
项目:midpoint    文件:HibernateToSqlTranslator.java   
/**
 * 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();
}
项目:lams    文件:SettingsFactory.java   
protected QueryTranslatorFactory createQueryTranslatorFactory(Properties properties, ServiceRegistry serviceRegistry) {
    String className = ConfigurationHelper.getString(
            AvailableSettings.QUERY_TRANSLATOR, properties, "org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory"
    );
    LOG.debugf( "Query translator: %s", className );
    try {
        return (QueryTranslatorFactory) serviceRegistry.getService( ClassLoaderService.class )
                .classForName( className )
                .newInstance();
    }
    catch ( Exception e ) {
        throw new HibernateException( "could not instantiate QueryTranslatorFactory: " + className, e );
    }
}
项目:lams    文件:Settings.java   
public QueryTranslatorFactory getQueryTranslatorFactory() {
    return queryTranslatorFactory;
}
项目:lams    文件:Settings.java   
void setQueryTranslatorFactory(QueryTranslatorFactory queryTranslatorFactory) {
    this.queryTranslatorFactory = queryTranslatorFactory;
}
项目:lams    文件:HQLQueryPlan.java   
@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 );
        }
    }
}