@Override public boolean existsById(ID id) { Assert.notNull(id, ID_MUST_NOT_BE_NULL); if (entityInformation.getIdAttribute() == null) { return findById(id).isPresent(); } String placeholder = provider.getCountQueryPlaceholder(); String entityName = entityInformation.getEntityName(); Iterable<String> idAttributeNames = entityInformation.getIdAttributeNames(); String existsQuery = QueryUtils.getExistsQueryString(entityName, placeholder, idAttributeNames); TypedQuery<Long> query = em.createQuery(existsQuery, Long.class); if (!entityInformation.hasCompositeId()) { query.setParameter(idAttributeNames.iterator().next(), id); return query.getSingleResult() == 1L; } for (String idAttributeName : idAttributeNames) { Object idAttributeValue = entityInformation.getCompositeIdAttributeValue(id, idAttributeName); boolean complexIdParameterValueDiscovered = idAttributeValue != null && !query.getParameter(idAttributeName).getParameterType().isAssignableFrom(idAttributeValue.getClass()); if (complexIdParameterValueDiscovered) { // fall-back to findById(id) which does the proper mapping for the parameter. return findById(id).isPresent(); } query.setParameter(idAttributeName, idAttributeValue); } return query.getSingleResult() == 1L; }
Assert.assertEquals(100, ((Query) query).getFetchSize().intValue()); Assert.assertNotNull(query.getParameter("name")); Assert.assertNotNull(query.getParameterValue(query.getParameter("name"))); Assert.assertEquals(1, query.getParameters().size()); Assert.assertTrue(query.isBound(query.getParameter("name"))); Assert.assertNull(query.getParameter(1));
@Override public <T> Parameter<T> getParameter(final int position, final Class<T> type) { return delegate.getParameter(position, type); }
@Override public <T> Parameter<T> getParameter(String name, Class<T> type) { return typedQuery.getParameter(name, type); }
@Override public Parameter<?> getParameter(int position) { return typedQuery.getParameter(position); }
@Override public <T> Parameter<T> getParameter(final String name, final Class<T> type) { return delegate.getParameter(name, type); }
@Override public Parameter<?> getParameter(int position) { return underlyingQuery.getParameter(position); }
@Override public <T> Parameter<T> getParameter(String name, Class<T> type) { return typedQuery.getParameter(name, type); }
@Override public <T> Parameter<T> getParameter(final String name, final Class<T> type) { return delegate.getParameter(name, type); }
@Override public Parameter<?> getParameter(final int position) { return delegate.getParameter(position); }
@Override public <T> Parameter<T> getParameter(int i, Class<T> type) { return delegate.getParameter(i, type); }
@Override public <T> Parameter<T> getParameter(String name, Class<T> type) { return underlyingQuery.getParameter(name, type); }
@Override public <T> Parameter<T> getParameter(String name, Class<T> type) { return underlyingQuery.getParameter(name, type); }
@Override public Parameter<?> getParameter(int position) { return underlyingQuery.getParameter(position); }
@Override public Parameter<?> getParameter(final String name) { return delegate.getParameter(name); }
@Override public <T> Parameter<T> getParameter(final int position, final Class<T> type) { return delegate.getParameter(position, type); }
@Override public Parameter<?> getParameter(String name) { return typedQuery.getParameter(name); }
@Override public Parameter<?> getParameter(int position) { return typedQuery.getParameter(position); }
@Override public <T> Parameter<T> getParameter(int position, Class<T> type) { return typedQuery.getParameter(position, type); }
@SuppressWarnings({ "RedundantCast" }) private Parameter mapToNamedParameter(Parameter criteriaParameter) { return jpaqlQuery.getParameter( explicitParameterMapping.get( criteriaParameter ) ); }