diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java index 735898602..82bf2ca50 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java @@ -1652,7 +1652,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, */ @Override public List findAllAndRemove(Query query, String collectionName) { - return findAllAndRemove(query, null, collectionName); + return (List) findAllAndRemove(query, Object.class, collectionName); } /* (non-Javadoc) diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java index bbe47bfe6..3473112c7 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java @@ -3239,6 +3239,25 @@ public class MongoTemplateTests { assertThat(loaded.getValue(), instanceOf(decimal128Type)); } + @Test // DATAMONGO-1718 + public void findAndRemoveAllWithoutExplicitDomainTypeShouldRemoveAndReturnEntitiesCorrectly() { + + Sample jon = new Sample("1", "jon snow"); + Sample bran = new Sample("2", "bran stark"); + Sample rickon = new Sample("3", "rickon stark"); + + template.save(jon); + template.save(bran); + template.save(rickon); + + List result = template.findAllAndRemove(query(where("field").regex(".*stark$")), + template.determineCollectionName(Sample.class)); + + assertThat(result, hasSize(2)); + assertThat(result, containsInAnyOrder(bran, rickon)); + assertThat(template.count(new BasicQuery("{}"), template.determineCollectionName(Sample.class)), is(equalTo(1L))); + } + static class TypeWithNumbers { @Id String id;