List of usage examples for org.hibernate.engine.spi NamedQueryDefinition getQueryString
public String getQueryString()
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); }