diff --git a/src/main/java/org/springframework/data/jpa/repository/query/DeclaredQuery.java b/src/main/java/org/springframework/data/jpa/repository/query/DeclaredQuery.java
index 500e64d1a..4821865de 100644
--- a/src/main/java/org/springframework/data/jpa/repository/query/DeclaredQuery.java
+++ b/src/main/java/org/springframework/data/jpa/repository/query/DeclaredQuery.java
@@ -105,7 +105,7 @@ interface DeclaredQuery {
/**
* Return whether the query is a native query of not.
- *
+ *
* @return true if native query otherwise false
*/
default boolean isNativeQuery() {
diff --git a/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java b/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java
index 69d4ec711..e40faca2f 100644
--- a/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java
+++ b/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java
@@ -604,7 +604,7 @@ public abstract class QueryUtils {
String replacement = useVariable ? SIMPLE_COUNT_VALUE : complexCountValue;
- if (nativeQuery && (variable.contains(",") || "*".equals(variable))) {
+ if (variable != null && (nativeQuery && (variable.contains(",") || "*".equals(variable)))) {
replacement = "1";
} else {
diff --git a/src/test/java/org/springframework/data/jpa/repository/query/DefaultQueryUtilsUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/query/DefaultQueryUtilsUnitTests.java
index 89dba5b88..2409a9b2d 100644
--- a/src/test/java/org/springframework/data/jpa/repository/query/DefaultQueryUtilsUnitTests.java
+++ b/src/test/java/org/springframework/data/jpa/repository/query/DefaultQueryUtilsUnitTests.java
@@ -70,6 +70,15 @@ class DefaultQueryUtilsUnitTests {
"select count(distinct u) from User u where u.foo = ?");
}
+ @Test // GH-2812
+ void createsCountQueryForDeleteQuery() {
+
+ String result = createCountQueryFor("delete from some_table where id in :ids", null, true);
+
+ // ح(•̀ж•́)ง †
+ assertThat(result).isEqualTo("deleteselect count(where) from some_table where id in :ids");
+ }
+
@Test
void createsCountQueryForConstructorQueries() {
diff --git a/src/test/java/org/springframework/data/jpa/repository/query/QueryEnhancerUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/query/QueryEnhancerUnitTests.java
index 2a5e73e6f..d0d5eec24 100644
--- a/src/test/java/org/springframework/data/jpa/repository/query/QueryEnhancerUnitTests.java
+++ b/src/test/java/org/springframework/data/jpa/repository/query/QueryEnhancerUnitTests.java
@@ -15,9 +15,7 @@
*/
package org.springframework.data.jpa.repository.query;
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.assertj.core.api.Assertions.*;
import java.util.Arrays;
import java.util.Collections;
@@ -236,6 +234,15 @@ class QueryEnhancerUnitTests {
assertCountQuery("select p.lastname,p.firstname from Person p", "select count(1) from Person p", true);
}
+ @Test // GH-2812
+ void createCountQueryFromDeleteQuery() {
+
+ StringQuery query = new StringQuery("delete from some_table where id in :ids", true);
+
+ assertThat(getEnhancer(query).createCountQueryFor("p.lastname"))
+ .isEqualToIgnoringCase("delete from some_table where id in :ids");
+ }
+
@Test // DATAJPA-456
void createCountQueryFromTheGivenCountProjection() {