diff --git a/src/main/java/org/springframework/data/jpa/repository/query/JpaCountQueryCreator.java b/src/main/java/org/springframework/data/jpa/repository/query/JpaCountQueryCreator.java index ff111fc83..6eeb3eac3 100644 --- a/src/main/java/org/springframework/data/jpa/repository/query/JpaCountQueryCreator.java +++ b/src/main/java/org/springframework/data/jpa/repository/query/JpaCountQueryCreator.java @@ -45,11 +45,21 @@ public class JpaCountQueryCreator extends JpaQueryCreator { super(tree, type, builder, provider); } + /* + * (non-Javadoc) + * @see org.springframework.data.jpa.repository.query.JpaQueryCreator#createCriteriaQuery(javax.persistence.criteria.CriteriaBuilder, org.springframework.data.repository.query.ReturnedType) + */ + @Override + protected CriteriaQuery createCriteriaQuery(CriteriaBuilder builder, ReturnedType type) { + return builder.createQuery(type.getDomainType()); + } + /* * (non-Javadoc) * @see org.springframework.data.jpa.repository.query.JpaQueryCreator#complete(javax.persistence.criteria.Predicate, org.springframework.data.domain.Sort, javax.persistence.criteria.CriteriaQuery, javax.persistence.criteria.CriteriaBuilder, javax.persistence.criteria.Root) */ @Override + @SuppressWarnings({ "unchecked", "rawtypes" }) protected CriteriaQuery complete(Predicate predicate, Sort sort, CriteriaQuery query, CriteriaBuilder builder, Root root) { diff --git a/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java b/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java index f498040cc..e2ef5f5cb 100644 --- a/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java +++ b/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java @@ -67,10 +67,7 @@ public class JpaQueryCreator extends AbstractQueryCreator typeToRead = type.getTypeToRead(); - - CriteriaQuery criteriaQuery = typeToRead == null ? builder.createTupleQuery() - : builder.createQuery(typeToRead); + CriteriaQuery criteriaQuery = createCriteriaQuery(builder, type); this.builder = builder; this.query = criteriaQuery.distinct(tree.isDistinct()); @@ -79,6 +76,20 @@ public class JpaQueryCreator extends AbstractQueryCreator createCriteriaQuery(CriteriaBuilder builder, ReturnedType type) { + + Class typeToRead = type.getTypeToRead(); + + return typeToRead == null ? builder.createTupleQuery() : builder.createQuery(typeToRead); + } + /** * Returns all {@link javax.persistence.criteria.ParameterExpression} created when creating the query. * @@ -169,10 +180,6 @@ public class JpaQueryCreator extends AbstractQueryCreator Expression getTypedPath(Root root, Part part) { - return toExpressionRecursively(root, part.getProperty()); - } - /** * Simple builder to contain logic to create JPA {@link Predicate}s from {@link Part}s. *