@Override public Object getParameterValue(String name) { Parameter<?> parameter = getExistingParameter(name); return getParameterValue(parameter); }
@Override public Object getParameterValue(int position) { return getParameterValue(getParameter(position)); }
@Override public <T> Parameter<T> getParameter(int position, Class<T> type) { return verifyTypeCompatibility(getParameter(position), type); }
@Override public TypedQuery<X> setParameter(int position, Object value) { paramValues.put(getParameter(position), value); return this; }
@Override public TypedQuery<X> setParameter(String name, Object value) { Parameter<?> param = getExistingParameter(name); paramValues.put(param, value); return this; }
@Override public <T> Parameter<T> getParameter(String name, Class<T> type) { Parameter<?> parameter = parameters.get(name); return verifyTypeCompatibility(parameter, type); }
@Override public X getSingleResult() { List<X> resultList = getResultList(); if (resultList.isEmpty()) { throw new NoResultException(); } else if (resultList.size() > 1) { throw new NonUniqueResultException("Query produced " + resultList.size() + " results (expected 1)"); } return resultList.get(0); }
@Override public List<X> getResultList() { List<X> results = em.findAll(em.getMetamodel().entity(resultType), this); Comparator<X> cmp = getComparator(); if (cmp != null) { Collections.sort(results, cmp); } return results; }
@Override public TypedQuery<X> setParameter(int position, Date value, TemporalType temporalType) { paramValues.put(getParameter(position), value); return this; }
@Override public TypedQuery<X> setParameter(String name, Date value, TemporalType temporalType) { Parameter<?> param = getExistingParameter(name); paramValues.put(param, value); return this; }
/** * Works like {@link #getParameter(String)}, but throws an exception if the * parameter does not exist. * * @param name * @return the Parameter of this query that has the given name. Never null. * @throws IllegalArgumentException * if this query doesn't have a parameter with the given name. */ private Parameter<?> getExistingParameter(String name) { Parameter<?> param = getParameter(name); if (param == null) { throw new IllegalArgumentException("Unknown query parameter \"" + name + "\""); } return param; }