diff --git a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaCountQueryCreator.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaCountQueryCreator.java index 6b6c2a660..29e43080f 100644 --- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaCountQueryCreator.java +++ b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaCountQueryCreator.java @@ -48,13 +48,16 @@ public class JpaCountQueryCreator extends JpaQueryCreator { */ public JpaCountQueryCreator(PartTree tree, ReturnedType type, CriteriaBuilder builder, ParameterMetadataProvider provider) { + super(tree, type, builder, provider); + this.distinct = tree.isDistinct(); } @Override protected CriteriaQuery createCriteriaQuery(CriteriaBuilder builder, ReturnedType type) { - return builder.createQuery(type.getDomainType()); + + return builder.createQuery(Long.class); } @Override diff --git a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java index 836cca29f..16074ed2c 100644 --- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java +++ b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java @@ -100,9 +100,10 @@ public class JpaQueryCreator extends AbstractQueryCreator createCriteriaQuery(CriteriaBuilder builder, ReturnedType type) { - Class typeToRead = type.getTypeToRead(); + Class typeToRead = tree.isDelete() ? type.getDomainType() : type.getTypeToRead(); - return typeToRead == null || tree.isExistsProjection() ? builder.createTupleQuery() + return (typeToRead == null) || tree.isExistsProjection() // + ? builder.createTupleQuery() // : builder.createQuery(typeToRead); }