diff --git a/src/main/java/org/springframework/data/querydsl/binding/QuerydslDefaultBinding.java b/src/main/java/org/springframework/data/querydsl/binding/QuerydslDefaultBinding.java index 8b33da33c..ea26702f6 100644 --- a/src/main/java/org/springframework/data/querydsl/binding/QuerydslDefaultBinding.java +++ b/src/main/java/org/springframework/data/querydsl/binding/QuerydslDefaultBinding.java @@ -38,6 +38,9 @@ import com.querydsl.core.types.dsl.SimpleExpression; * @author Christoph Strobl * @author Oliver Gierke * @since 1.11 + * + * @author Colin Gao + * @since 2.1 */ class QuerydslDefaultBinding implements MultiValueBinding, Object> { @@ -73,7 +76,12 @@ class QuerydslDefaultBinding implements MultiValueBinding return Optional.of(((SimpleExpression) path).in(value)); } - return Optional.of(((SimpleExpression) path).eq(value.iterator().next())); + Object object = value.iterator().next(); + if (object == null) { + return Optional.of(((SimpleExpression) path).isNull()); + } + + return Optional.of(((SimpleExpression) path).eq(object)); } throw new IllegalArgumentException( diff --git a/src/test/java/org/springframework/data/querydsl/binding/QuerydslDefaultBindingUnitTests.java b/src/test/java/org/springframework/data/querydsl/binding/QuerydslDefaultBindingUnitTests.java index 34d16662e..166690c56 100755 --- a/src/test/java/org/springframework/data/querydsl/binding/QuerydslDefaultBindingUnitTests.java +++ b/src/test/java/org/springframework/data/querydsl/binding/QuerydslDefaultBindingUnitTests.java @@ -30,6 +30,7 @@ import com.querydsl.core.types.Predicate; /** * @author Christoph Strobl * @author Oliver Gierke + * @author Colin Gao */ public class QuerydslDefaultBindingUnitTests { @@ -76,4 +77,10 @@ public class QuerydslDefaultBindingUnitTests { public void testname() { assertThat(binding.bind(QUser.user.lastname, Collections.emptySet())).isNotPresent(); } + + @Test //DATACMNS-1578 + public void shouldCreatePredicateWithIsNullWhenPropertyIsAnNestedObjectAndValueIsNull() { + Optional predicate = binding.bind(QUser.user.address.city, Collections.singleton(null)); + assertThat(predicate).hasValueSatisfying(it -> assertThat(it.toString()).isEqualTo(QUser.user.address.city.isNull().toString())); + } }