diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java index bef1c2165..d2d355e19 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/query/MongoQueryCreator.java @@ -382,7 +382,7 @@ class MongoQueryCreator extends AbstractQueryCreator { if (next instanceof Collection) { return ((Collection) next).toArray(); - } else if (next.getClass().isArray()) { + } else if (next != null && next.getClass().isArray()) { return (Object[]) next; } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MongoQueryCreatorUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MongoQueryCreatorUnitTests.java index 40be393cb..4d8fd0b3a 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MongoQueryCreatorUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/MongoQueryCreatorUnitTests.java @@ -661,6 +661,20 @@ public class MongoQueryCreatorUnitTests { assertThat(query, is(query(where("username").regex(".*")))); } + /** + * @see DATAMONGO-1342 + */ + @Test + public void bindsNullValueToContainsClause() { + + PartTree partTree = new PartTree("emailAddressesContains", User.class); + + ConvertingParameterAccessor accessor = getAccessor(converter, new Object[] { null }); + Query query = new MongoQueryCreator(partTree, accessor, context).createQuery(); + + assertThat(query, is(query(where("emailAddresses").in((Object) null)))); + } + interface PersonRepository extends Repository { List findByLocationNearAndFirstname(Point location, Distance maxDistance, String firstname);