code: protected void prepareQuery(Query queryObject) {
  		if (isCacheQueries()) {
  			queryObject.setCacheable(true);
  			if (getQueryCacheRegion() != null) {
  				queryObject.setCacheRegion(getQueryCacheRegion());
  			}
  		}
  		if (getFetchSize() > 0) {
  			queryObject.setFetchSize(getFetchSize());
  		}
  		if (getMaxResults() > 0) {
  			queryObject.setMaxResults(getMaxResults());
  		}
  
  		if (getFirstResult() > 0) {
  			queryObject.setFirstResult(getFirstResult());
  		}
  
  	}
docs: Prepare the given Query object, applying cache settings and/or a
  transaction timeout.
  
  @param queryObject
  the Query object to prepare
  @see #setCacheQueries
  @see #setQueryCacheRegion
  @see SessionProviderHolder#applyTransactionTimeout