@Override public boolean isEntity() { return isEntity.get(); }
@Override public boolean isIdProperty() { return isIdProperty.get(); }
@Override public boolean isAssociation() { return isAssociation.get(); }
/** * Returns whether the given type is managed by the backing JPA {@link Metamodel}. * * @param type must not be {@literal null}. * @return */ public boolean isJpaManaged(Class<?> type) { Assert.notNull(type, "Type must not be null!"); return managedTypes.get().contains(type); }
@Override protected StoredProcedureQuery doCreateQuery(Object[] values) { return parameterBinder.get().bind(createStoredProcedure(), values); }
@Override protected TypedQuery<Long> doCreateCountQuery(Object[] values) { EntityManager em = getEntityManager(); TypedQuery<Long> countQuery; if (namedCountQueryIsPresent) { countQuery = em.createNamedQuery(countQueryName, Long.class); } else { String countQueryString = declaredQuery.deriveCountQuery(null, countProjection).getQueryString(); countQuery = em.createQuery(countQueryString, Long.class); } return parameterBinder.get().bind(countQuery, values, LENIENT); }
@Override protected Query doCreateCountQuery(Object[] values) { String queryString = countQuery.getQueryString(); EntityManager em = getEntityManager(); Query query = getQueryMethod().isNativeQuery() // ? em.createNativeQuery(queryString) // : em.createQuery(queryString, Long.class); return parameterBinder.get().bind(query, values, LENIENT); }
@Override protected Query doCreateQuery(Object[] values) { EntityManager em = getEntityManager(); JpaQueryMethod queryMethod = getQueryMethod(); ResultProcessor processor = queryMethod.getResultProcessor() .withDynamicProjection(new ParametersParameterAccessor(queryMethod.getParameters(), values)); Query query = getTypeToRead(processor.getReturnedType()) // .<Query> map(it -> em.createNamedQuery(queryName, it)) // .orElseGet(() -> em.createNamedQuery(queryName)); return parameterBinder.get().bindAndPrepare(query, values); }
/** * The Jackson {@link ObjectMapper} used internally. * * @return */ public ObjectMapper objectMapper() { return mapper.get(); }
@Override public boolean exposesDelete() { return exposesDelete.get(); }
@Override public boolean exposesFindOne() { return exposesFindOne.get(); }
@Override public boolean exposesSave() { return exposesSave.get(); }
@Override public boolean exposesFindAll() { return exposesFindAll.get(); }
@Override public Query doCreateQuery(Object[] values) { ParameterAccessor accessor = new ParametersParameterAccessor(getQueryMethod().getParameters(), values); String sortedQueryString = QueryUtils.applySorting(query.getQueryString(), accessor.getSort(), query.getAlias()); ResultProcessor processor = getQueryMethod().getResultProcessor().withDynamicProjection(accessor); Query query = createJpaQuery(sortedQueryString, processor.getReturnedType()); // it is ok to reuse the binding contained in the ParameterBinder although we create a new query String because the // parameters in the query do not change. return parameterBinder.get().bindAndPrepare(query, values); }
@Override public boolean isIdProperty() { return isIdProperty.get(); }
/** * Returns whether the given type is managed by the backing JPA {@link Metamodel}. * * @param type must not be {@literal null}. * @return */ public boolean isJpaManaged(Class<?> type) { Assert.notNull(type, "Type must not be null!"); return managedTypes.get().contains(type); }
@Override protected TypedQuery<Long> doCreateCountQuery(Object[] values) { EntityManager em = getEntityManager(); TypedQuery<Long> countQuery; if (namedCountQueryIsPresent) { countQuery = em.createNamedQuery(countQueryName, Long.class); } else { String countQueryString = declaredQuery.deriveCountQuery(null, countProjection).getQueryString(); countQuery = em.createQuery(countQueryString, Long.class); } return parameterBinder.get().bind(countQuery, values, LENIENT); }
@Override protected Query doCreateCountQuery(Object[] values) { String queryString = countQuery.getQueryString(); EntityManager em = getEntityManager(); Query query = getQueryMethod().isNativeQuery() // ? em.createNativeQuery(queryString) // : em.createQuery(queryString, Long.class); return parameterBinder.get().bind(query, values, LENIENT); }
@Override protected Query doCreateQuery(Object[] values) { EntityManager em = getEntityManager(); JpaQueryMethod queryMethod = getQueryMethod(); ResultProcessor processor = queryMethod.getResultProcessor() .withDynamicProjection(new ParametersParameterAccessor(queryMethod.getParameters(), values)); Query query = getTypeToRead(processor.getReturnedType()) // .<Query> map(it -> em.createNamedQuery(queryName, it)) // .orElseGet(() -> em.createNamedQuery(queryName)); return parameterBinder.get().bindAndPrepare(query, values); }
@Override public Query doCreateQuery(Object[] values) { ParameterAccessor accessor = new ParametersParameterAccessor(getQueryMethod().getParameters(), values); String sortedQueryString = QueryUtils.applySorting(query.getQueryString(), accessor.getSort(), query.getAlias()); ResultProcessor processor = getQueryMethod().getResultProcessor().withDynamicProjection(accessor); Query query = createJpaQuery(sortedQueryString, processor.getReturnedType()); // it is ok to reuse the binding contained in the ParameterBinder although we create a new query String because the // parameters in the query do not change. return parameterBinder.get().bindAndPrepare(query, values); }