Example usage for org.hibernate.engine.spi NamedQueryDefinition getQueryString

List of usage examples for org.hibernate.engine.spi NamedQueryDefinition getQueryString

Introduction

In this page you can find the example usage for org.hibernate.engine.spi NamedQueryDefinition getQueryString.

Prototype

public String getQueryString() 

Source Link

Usage

From source file:org.babyfish.hibernate.internal.SessionImplWrapper.java

License:Open Source License

@SuppressWarnings("unchecked")
protected static XQuery getNamedQuery(XSessionImplementor sessionProxy, String queryName)
        throws HibernateException {
    errorIfClosed(sessionProxy.getRawSessionImpl());
    checkTransactionSynchStatus(sessionProxy.getRawSessionImpl());
    NamedQueryDefinition nqd = sessionProxy.getFactory().getNamedQuery(queryName);
    if (nqd != null) {
        String queryString = nqd.getQueryString();
        XQueryPlan xQueryPlan = (XQueryPlan) sessionProxy.getFactory().getQueryPlanCache()
                .getHQLQueryPlan(queryString, false, sessionProxy.getRawSessionImpl().getEnabledFilters());
        XQuery query = new XQueryImpl(queryString, nqd.getFlushMode(), sessionProxy,
                xQueryPlan.getParameterMetadata());
        query.setComment("named HQL query " + queryName);
        initQuery(sessionProxy.getRawSessionImpl(), query, nqd);
        return query;
    }/*from  w w  w.j ava2s  . c  o  m*/
    NamedSQLQueryDefinition nsqlqd = sessionProxy.getFactory().getNamedSQLQuery(queryName);
    if (nsqlqd != null) {
        throw new MappingException("Name query \"" + queryName + "\" is a native query");
    }
    throw new MappingException("Named query not known: " + queryName);
}

From source file:org.babyfish.hibernate.internal.SessionImplWrapper.java

License:Open Source License

@SuppressWarnings("unchecked")
protected static XQuery createQuery(XSessionImplementor sessionProxy, NamedQueryDefinition namedQueryDefinition)
        throws HibernateException {
    String queryString = namedQueryDefinition.getQueryString();
    XQueryPlan xQueryPlan = (XQueryPlan) sessionProxy.getFactory().getQueryPlanCache()
            .getHQLQueryPlan(queryString, false, sessionProxy.getRawSessionImpl().getEnabledFilters());
    XQuery query = new XQueryImpl(queryString, namedQueryDefinition.getFlushMode(), sessionProxy,
            xQueryPlan.getParameterMetadata());
    query.setComment("named HQL query " + namedQueryDefinition.getName());
    if (namedQueryDefinition.getLockOptions() != null) {
        query.setLockOptions(namedQueryDefinition.getLockOptions());
    }/*from w ww .j  ava2  s  .c  o  m*/
    return query;
}

From source file:org.rhq.core.domain.server.PersistenceUtility.java

License:Open Source License

/**
 * Create a query from a named query with a transformed order by clause with multiple new ordery by clauses.
 *
 * @param  entityManager the entity manager to build the query against
 * @param  queryName     the name of the query to transform
 * @param  orderByFields an array of clauses to contribute to the order by
 *
 * @return the transformed query// w  w w . j  av a  2  s. c  o  m
 */
public static Query createQueryWithOrderBy(EntityManager entityManager, String queryName,
        OrderingField... orderByFields) {
    NamedQueryDefinition ndc = getNamedQueryDefinition(entityManager, queryName);
    StringBuilder query = new StringBuilder(ndc.getQueryString());
    buildOrderBy(query, orderByFields);
    return entityManager.createQuery(query.toString());
}

From source file:org.rhq.core.domain.server.PersistenceUtility.java

License:Open Source License

/**
 * Builds a count(*) version of the named query so we don't have duplicate all our queries to use two query
 * pagination model./* w ww .j av a2 s .  co  m*/
 *
 * @param  entityManager the entity manager to build the query for
 * @param  queryName     the NamedQuery to transform
 * @param  countItem     the object or attribute that needs to be counted, when it's ambiguous
 *
 * @return a query that can be bound and executed to get the total count of results
 */
public static Query createCountQuery(EntityManager entityManager, String queryName, String countItem) {
    NamedQueryDefinition namedQueryDefinition = getNamedQueryDefinition(entityManager, queryName);
    String query = namedQueryDefinition.getQueryString();

    Matcher matcher = COUNT_QUERY_PATTERN.matcher(query);
    if (!matcher.find()) {
        throw new RuntimeException(
                "Unable to transform query into count query [" + queryName + " - " + query + "]");
    }

    String newQuery = matcher.group(1) + "COUNT(" + countItem + ")" + matcher.group(3);

    matcher = COUNT_QUERY_REMOVE_FETCH.matcher(newQuery);
    if (matcher.find()) {
        StringBuffer buffer = new StringBuffer();
        do {
            matcher.appendReplacement(buffer, "");
        } while (matcher.find());
        matcher.appendTail(buffer);
        newQuery = buffer.toString();
    }
    if (LOG.isTraceEnabled()) {
        LOG.trace("Transformed query to count query [" + queryName + "] resulting in [" + newQuery + "]");
    }

    return entityManager.createQuery(newQuery);
}