diff --git a/querydsl-core/src/main/java/com/querydsl/core/types/NullExpression.java b/querydsl-core/src/main/java/com/querydsl/core/types/NullExpression.java index 58a7c6e27..6cc0d0eb4 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/types/NullExpression.java +++ b/querydsl-core/src/main/java/com/querydsl/core/types/NullExpression.java @@ -33,7 +33,7 @@ public final class NullExpression extends TemplateExpressionImpl { */ public static final NullExpression DEFAULT = new NullExpression(Object.class); - private NullExpression(Class type) { + public NullExpression(Class type) { super(type, NULL_TEMPLATE, ImmutableList.of()); } diff --git a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/Expressions.java b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/Expressions.java index f7b86d4f5..3839d45c5 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/types/dsl/Expressions.java +++ b/querydsl-core/src/main/java/com/querydsl/core/types/dsl/Expressions.java @@ -15,11 +15,30 @@ package com.querydsl.core.types.dsl; import java.sql.Time; -import java.util.*; +import java.util.Collection; +import java.util.Date; +import java.util.List; import com.google.common.collect.ImmutableList; import com.querydsl.core.Tuple; -import com.querydsl.core.types.*; +import com.querydsl.core.types.CollectionExpression; +import com.querydsl.core.types.ConstantImpl; +import com.querydsl.core.types.Expression; +import com.querydsl.core.types.ExpressionUtils; +import com.querydsl.core.types.NullExpression; +import com.querydsl.core.types.OperationImpl; +import com.querydsl.core.types.Operator; +import com.querydsl.core.types.Ops; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.PathImpl; +import com.querydsl.core.types.PathMetadata; +import com.querydsl.core.types.PathMetadataFactory; +import com.querydsl.core.types.PredicateOperation; +import com.querydsl.core.types.PredicateTemplate; +import com.querydsl.core.types.Template; +import com.querydsl.core.types.TemplateExpressionImpl; +import com.querydsl.core.types.TemplateFactory; +import com.querydsl.core.types.Visitor; /** * Factory class for {@link Expression} creation. @@ -1670,7 +1689,7 @@ public final class Expressions { * @return null expression */ public static NullExpression nullExpression(Class type) { - return nullExpression(); + return new NullExpression(type); } /** diff --git a/querydsl-core/src/test/java/com/querydsl/core/NullExpressionTest.java b/querydsl-core/src/test/java/com/querydsl/core/NullExpressionTest.java new file mode 100644 index 000000000..5b27b9a0f --- /dev/null +++ b/querydsl-core/src/test/java/com/querydsl/core/NullExpressionTest.java @@ -0,0 +1,42 @@ +/* + * Copyright 2015, The Querydsl Team (http://www.querydsl.com/team) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.querydsl.core; + +import static org.junit.Assert.assertNotNull; + +import java.time.LocalDate; + +import org.junit.Test; + +import com.querydsl.core.domain.Cat; +import com.querydsl.core.domain.QCat; +import com.querydsl.core.types.ExpressionException; +import com.querydsl.core.types.Projections; +import com.querydsl.core.types.dsl.Expressions; + +public class NullExpressionTest { + + @Test + public void withConstructor() { + Cat cat = Projections.constructor(Cat.class, Expressions.nullExpression(String.class), QCat.cat.id, QCat.cat.bodyWeight).newInstance(null, 1, 2.5); + assertNotNull(cat); + } + + + @Test(expected = ExpressionException.class) + public void withoutConstructor() { + Cat cat = Projections.constructor(Cat.class, Expressions.nullExpression(String.class), QCat.cat.id, QCat.cat.birthdate).newInstance(null, 1, LocalDate.now()); + assertNotNull(cat); + } +}