diff --git a/pom.xml b/pom.xml
index 5fe51bd099..d5ce7e7619 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-mongodb-parent
- 3.2.0-SNAPSHOT
+ 3.2.0-GH-3623-SNAPSHOT
pom
Spring Data MongoDB
diff --git a/spring-data-mongodb-benchmarks/pom.xml b/spring-data-mongodb-benchmarks/pom.xml
index f0fbb601c8..f25c5b5837 100644
--- a/spring-data-mongodb-benchmarks/pom.xml
+++ b/spring-data-mongodb-benchmarks/pom.xml
@@ -7,7 +7,7 @@
org.springframework.data
spring-data-mongodb-parent
- 3.2.0-SNAPSHOT
+ 3.2.0-GH-3623-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml
index 1a17321782..755e7476d9 100644
--- a/spring-data-mongodb-distribution/pom.xml
+++ b/spring-data-mongodb-distribution/pom.xml
@@ -14,7 +14,7 @@
org.springframework.data
spring-data-mongodb-parent
- 3.2.0-SNAPSHOT
+ 3.2.0-GH-3623-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml
index 0248517caf..e490be9ba8 100644
--- a/spring-data-mongodb/pom.xml
+++ b/spring-data-mongodb/pom.xml
@@ -11,7 +11,7 @@
org.springframework.data
spring-data-mongodb-parent
- 3.2.0-SNAPSHOT
+ 3.2.0-GH-3623-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/AggregationUtils.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/AggregationUtils.java
index 8a8ffa0542..6078f23a15 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/AggregationUtils.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/AggregationUtils.java
@@ -163,9 +163,9 @@ static void appendLimitAndOffsetIfPresent(List aggregation
* @throws IllegalArgumentException when none of the above rules is met.
*/
@Nullable
- static T extractSimpleTypeResult(Document source, Class targetType, MongoConverter converter) {
+ static T extractSimpleTypeResult(@Nullable Document source, Class targetType, MongoConverter converter) {
- if (source.isEmpty()) {
+ if (source == null || source.isEmpty()) {
return null;
}
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/StringBasedAggregationUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/StringBasedAggregationUnitTests.java
index 59656e3030..00506229ea 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/StringBasedAggregationUnitTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/StringBasedAggregationUnitTests.java
@@ -159,6 +159,14 @@ public void returnCollection() {
assertThat(executeAggregation("returnCollection").result).isEqualTo(expected);
}
+ @Test // GH-3623
+ public void returnNullWhenSingleResultIsNotPresent() {
+
+ when(aggregationResults.getMappedResults()).thenReturn(Collections.emptyList());
+
+ assertThat(executeAggregation("simpleReturnType").result).isNull();
+ }
+
@Test // DATAMONGO-2153
public void returnRawResultType() {
assertThat(executeAggregation("returnRawResultType").result).isEqualTo(aggregationResults);
@@ -312,6 +320,9 @@ private interface SampleRepository extends Repository {
@Aggregation(RAW_GROUP_BY_LASTNAME_STRING)
Page invalidPageReturnType(Pageable page);
+
+ @Aggregation(RAW_GROUP_BY_LASTNAME_STRING)
+ String simpleReturnType();
}
static class PersonAggregate {