/** * @Deprecated -- Use org.apache.openjpa.persistence.EntityManagerImpl.newQueryImpl(Query kernelQuery, QueryMetaData * qmd) * <br> * Leave this method here as extenders of OpenJPA might depend on this hook to allow interception of * query creation */ protected <T> QueryImpl<T> newQueryImpl(org.apache.openjpa.kernel.Query kernelQuery) { return new QueryImpl<T>(this, _ret, kernelQuery, null); }
/** * Return a cache key for the given query. */ private QueryKey toQueryKey(Query q) { QueryImpl impl = (QueryImpl) q; if (impl.hasPositionalParameters()) return QueryKey.newInstance(impl.getDelegate(), impl.getPositionalParameters()); return QueryKey.newInstance(impl.getDelegate(), impl.getNamedParameters()); }
/** * Sets lock mode on the given query. * If the target query has been prepared and cached, then ignores the cached version. * @see #ignorePreparedQuery() */ public TypedQuery<X> setLockMode(LockModeType lockMode) { String language = getLanguage(); if (QueryLanguages.LANG_PREPARED_SQL.equals(language)) { ignorePreparedQuery(); } assertJPQLOrCriteriaQuery(); getFetchPlan().setReadLockMode(lockMode); return this; }
if (Boolean.FALSE.equals(status)) return; FetchPlan plan = owner.getFetchPlan(); if (status == null) { plan.setHint(key, value); ClassLoader loader = owner.getDelegate().getBroker().getClassLoader(); if (QueryHints.HINT_SUBCLASSES.equals(key)) { if (value instanceof String) value = Boolean.valueOf((String) value); owner.setSubclasses(((Boolean) value).booleanValue()); } else if (QueryHints.HINT_RELAX_BIND_PARAM_TYPE_CHECK.equals(key)) { owner.setRelaxBindParameterTypeChecking(value); } else if (QueryHints.HINT_FILTER_LISTENER.equals(key)) { owner.addFilterListener(Filters.hintToFilterListener(value, loader)); } else if (QueryHints.HINT_FILTER_LISTENERS.equals(key)) { FilterListener[] arr = Filters.hintToFilterListeners(value, loader); for (int i = 0; i < arr.length; i++) owner.addFilterListener(arr[i]); } else if (QueryHints.HINT_AGGREGATE_LISTENER.equals(key)) { owner.addAggregateListener(Filters.hintToAggregateListener(value, loader)); } else if (QueryHints.HINT_AGGREGATE_LISTENERS.equals(key)) { AggregateListener[] arr = Filters.hintToAggregateListeners(value, loader); for (int i = 0; i < arr.length; i++) { owner.addAggregateListener(arr[i]); } else if (QueryHints.HINT_INVALIDATE_PREPARED_QUERY.equals(key)) { plan.setHint(key, Filters.convert(value, Boolean.class)); owner.invalidatePreparedQuery();
private Object execute() { if (!isNative() && _query.getOperation() != QueryOperations.OP_SELECT) throw new InvalidStateException(_loc.get("not-select-query", getQueryString()), null, null, false); try { lock(); Map params = getParameterValues(); boolean registered = preExecute(params); Object result = _query.execute(params); if (registered) { postExecute(result); } return result; } catch (LockTimeoutException e) { throw new QueryTimeoutException(e.getMessage(), new Throwable[]{e}, this); } finally { unlock(); } }
/** * Execute a query that returns a single result. */ public X getSingleResult() { _em.assertNotCloseInvoked(); setHint(QueryHints.HINT_RESULT_COUNT, 1); // for DB2 optimization boolean queryFetchPlanUsed = pushQueryFetchPlan(); try { List result = getResultList(); if (result == null || result.isEmpty()) throw new NoResultException(_loc.get("no-result", getQueryString()) .getMessage()); if (result.size() > 1) throw new NonUniqueResultException(_loc.get("non-unique-result", getQueryString(), result.size()).getMessage()); try { return (X)result.get(0); } catch (Exception e) { throw new NoResultException(_loc.get("no-result", getQueryString()) .getMessage()); } } finally { popQueryFetchPlan(queryFetchPlanUsed); } }
public int executeUpdate() { _em.assertNotCloseInvoked(); Map<?,?> paramValues = getParameterValues(); if (_query.getOperation() == QueryOperations.OP_DELETE) { return asInt(paramValues.isEmpty() ? _query.deleteAll() : _query.deleteAll(paramValues)); } if (_query.getOperation() == QueryOperations.OP_UPDATE) { return asInt(paramValues.isEmpty() ? _query.updateAll() : _query.updateAll(paramValues)); } throw new InvalidStateException(_loc.get("not-update-delete-query", getQueryString()), null, null, false); }
public List getResultList() { _em.assertNotCloseInvoked(); boolean queryFetchPlanUsed = pushQueryFetchPlan(); try { Object ob = execute(); if (ob instanceof List) { List ret = (List) ob; if (ret instanceof ResultList) { RuntimeExceptionTranslator trans = PersistenceExceptions.getRollbackTranslator(_em); if (_query.isDistinct()) { return new DistinctResultList((ResultList) ret, trans); } else { return new DelegatingResultList((ResultList) ret, trans); } } else { return ret; } } return Collections.singletonList(ob); } finally { popQueryFetchPlan(queryFetchPlanUsed); } }
if (fetch.getReadLockLevel() != 0) { if (cache.get(_id) != null) { ignorePreparedQuery(); ignorePreparedQuery(); return false; params.putAll(rep); } catch (UserException ue) { invalidatePreparedQuery(); Log log = _em.getConfiguration().getLog(OpenJPAConfiguration.LOG_RUNTIME); if (log.isWarnEnabled()) stats.recordExecution(getQueryString());
if (value instanceof String) value = Boolean.valueOf((String) value); setSubclasses(((Boolean) value).booleanValue()); } else if ("FilterListener".equals(k)) addFilterListener(Filters.hintToFilterListener(value, _query.getBroker().getClassLoader())); else if ("FilterListeners".equals(k)) { _query.getBroker().getClassLoader()); for (int i = 0; i < arr.length; i++) addFilterListener(arr[i]); } else if ("AggregateListener".equals(k)) addAggregateListener(Filters.hintToAggregateListener(value, _query.getBroker().getClassLoader())); else if ("FilterListeners".equals(k)) { (value, _query.getBroker().getClassLoader()); for (int i = 0; i < arr.length; i++) addAggregateListener(arr[i]); } else if (k.startsWith("FetchPlan.")) { k = k.substring("FetchPlan.".length()); hintToSetter(getFetchPlan(), k, value); } else if (k.startsWith("hint.")) { if ("hint.OptimizeResultCount".equals(k)) {
public LockModeType getLockMode() { assertJPQLOrCriteriaQuery(); return getFetchPlan().getReadLockMode(); }
/** * Gets the kernel delegate that is handles actual execution on behalf of this receiver. * * @return */ public org.apache.openjpa.kernel.Query getExecutableQuery() { return _delegate.getDelegate(); }
public int getFirstResult() { return asInt(_query.getStartRange()); }
public OpenJPAQuery createQuery(Query query) { if (query == null) return createQuery((String) null); assertNotCloseInvoked(); org.apache.openjpa.kernel.Query q = ((QueryImpl) query).getDelegate(); return new QueryImpl(this, ret, _broker.newQuery(q.getLanguage(), q)); }
public List getResultList() { _em.assertNotCloseInvoked(); Object ob = execute(); if (ob instanceof List) { List ret = (List) ob; if (ret instanceof ResultList) return new DelegatingResultList((ResultList) ret, PersistenceExceptions.getRollbackTranslator(_em)); else return ret; } return Collections.singletonList(ob); }
@SuppressWarnings("unchecked") @Override public List<SLASummaryBean> execute(EntityManager em) throws JPAExecutorException { initPossibleSortbyColumnList(em); createCriteriaQuery(em); TypedQuery<SLASummaryBean> typedQuery = em.createQuery(criteriaQuery); typedQuery.setMaxResults(numMaxResults); LOG.debug("Query string: {0}",typedQuery.unwrap(org.apache.openjpa.persistence.QueryImpl.class).getQueryString()); return typedQuery.getResultList(); }
if (Boolean.FALSE.equals(status)) return; FetchPlan plan = owner.getFetchPlan(); if (status == null) { plan.setHint(key, value); ClassLoader loader = owner.getDelegate().getBroker().getClassLoader(); if (QueryHints.HINT_SUBCLASSES.equals(key)) { if (value instanceof String) value = Boolean.valueOf((String) value); owner.setSubclasses(((Boolean) value).booleanValue()); } else if (QueryHints.HINT_RELAX_BIND_PARAM_TYPE_CHECK.equals(key)) { owner.setRelaxBindParameterTypeChecking(value); } else if (QueryHints.HINT_FILTER_LISTENER.equals(key)) { owner.addFilterListener(Filters.hintToFilterListener(value, loader)); } else if (QueryHints.HINT_FILTER_LISTENERS.equals(key)) { FilterListener[] arr = Filters.hintToFilterListeners(value, loader); for (int i = 0; i < arr.length; i++) owner.addFilterListener(arr[i]); } else if (QueryHints.HINT_AGGREGATE_LISTENER.equals(key)) { owner.addAggregateListener(Filters.hintToAggregateListener(value, loader)); } else if (QueryHints.HINT_AGGREGATE_LISTENERS.equals(key)) { AggregateListener[] arr = Filters.hintToAggregateListeners(value, loader); for (int i = 0; i < arr.length; i++) { owner.addAggregateListener(arr[i]); } else if (QueryHints.HINT_INVALIDATE_PREPARED_QUERY.equals(key)) { plan.setHint(key, Filters.convert(value, Boolean.class)); owner.invalidatePreparedQuery();
private Object execute() { if (!isNative() && _query.getOperation() != QueryOperations.OP_SELECT) throw new InvalidStateException(_loc.get("not-select-query", getQueryString()), null, null, false); try { lock(); Map params = getParameterValues(); boolean registered = preExecute(params); Object result = _query.execute(params); if (registered) { postExecute(result); } return result; } catch (LockTimeoutException e) { throw new QueryTimeoutException(e.getMessage(), new Throwable[]{e}, this); } finally { unlock(); } }
/** * Execute a query that returns a single result. */ public X getSingleResult() { _em.assertNotCloseInvoked(); setHint(QueryHints.HINT_RESULT_COUNT, 1); // for DB2 optimization boolean queryFetchPlanUsed = pushQueryFetchPlan(); try { List result = getResultList(); if (result == null || result.isEmpty()) throw new NoResultException(_loc.get("no-result", getQueryString()) .getMessage()); if (result.size() > 1) throw new NonUniqueResultException(_loc.get("non-unique-result", getQueryString(), result.size()).getMessage()); try { return (X)result.get(0); } catch (Exception e) { throw new NoResultException(_loc.get("no-result", getQueryString()) .getMessage()); } } finally { popQueryFetchPlan(queryFetchPlanUsed); } }