diff --git a/querydsl-core/src/main/java/com/querydsl/core/support/DetachableMixin.java b/querydsl-core/src/main/java/com/querydsl/core/support/DetachableMixin.java index 784023087..5c4c833cb 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/support/DetachableMixin.java +++ b/querydsl-core/src/main/java/com/querydsl/core/support/DetachableMixin.java @@ -86,7 +86,7 @@ public class DetachableMixin implements Detachable { } else if (arg != null) { return ConstantImpl.create(arg); } else { - return NullExpression.DEFAULT; + return Expressions.nullExpression(); } } @@ -123,7 +123,7 @@ public class DetachableMixin implements Detachable { } private Expression nullAsTemplate(@Nullable Expression expr) { - return expr != null ? expr : NullExpression.DEFAULT; + return expr != null ? expr : Expressions.nullExpression(); } @SuppressWarnings("unchecked") diff --git a/querydsl-core/src/main/java/com/querydsl/core/support/Expressions.java b/querydsl-core/src/main/java/com/querydsl/core/support/Expressions.java index be729ccb8..fc77d23d5 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/support/Expressions.java +++ b/querydsl-core/src/main/java/com/querydsl/core/support/Expressions.java @@ -77,7 +77,7 @@ public final class Expressions { @SuppressWarnings("unchecked") public static SimpleExpression as(Expression source, Path alias) { if (source == null) { - return as((Expression)NullExpression.DEFAULT, alias); + return as((Expression)nullExpression(), alias); } else { return SimpleOperation.create((Class)alias.getType(), Ops.ALIAS, source, alias); } @@ -163,7 +163,7 @@ public final class Expressions { @SuppressWarnings({ "unchecked", "rawtypes" }) public static SimpleExpression constantAs(D source, Path alias) { if (source == null) { - return as((Expression)NullExpression.DEFAULT, alias); + return as((Expression)nullExpression(), alias); } else { return as(ConstantImpl.create(source), alias); } @@ -632,6 +632,37 @@ public final class Expressions { return rv; } + /** + * Get the default null expression + * + * @return + */ + public static NullExpression nullExpression() { + return NullExpression.DEFAULT; + } + + /** + * Get a null expression for the given type + * + * @param type + * @param + * @return + */ + public static NullExpression nullExpression(Class type) { + return new NullExpression(type); + } + + /** + * Get a null expression for the given path + * + * @param path + * @param + * @return + */ + public static NullExpression nullExpression(Path path) { + return new NullExpression(path.getType()); + } + private Expressions() {} } diff --git a/querydsl-core/src/test/java/com/querydsl/core/support/DetachableMixinTest.java b/querydsl-core/src/test/java/com/querydsl/core/support/DetachableMixinTest.java index b33a06f1f..252116486 100644 --- a/querydsl-core/src/test/java/com/querydsl/core/support/DetachableMixinTest.java +++ b/querydsl-core/src/test/java/com/querydsl/core/support/DetachableMixinTest.java @@ -76,7 +76,7 @@ public class DetachableMixinTest { SubQueryExpression subQuery = detachable.unique(new PathImpl(Object.class, "x"), null); List> exprs = ((FactoryExpression)subQuery.getMetadata().getProjection()).getArgs(); assertEquals(new PathImpl(Object.class, "x"), exprs.get(0)); - assertEquals(NullExpression.DEFAULT, exprs.get(1)); + assertEquals(Expressions.nullExpression(), exprs.get(1)); } } diff --git a/querydsl-jdo/src/main/java/com/querydsl/jdo/dml/JDOUpdateClause.java b/querydsl-jdo/src/main/java/com/querydsl/jdo/dml/JDOUpdateClause.java index 4672611de..39c1b8c5d 100644 --- a/querydsl-jdo/src/main/java/com/querydsl/jdo/dml/JDOUpdateClause.java +++ b/querydsl-jdo/src/main/java/com/querydsl/jdo/dml/JDOUpdateClause.java @@ -22,7 +22,6 @@ import com.querydsl.core.QueryMetadata; import com.querydsl.core.dml.UpdateClause; import com.querydsl.core.support.Expressions; import com.querydsl.core.types.Expression; -import com.querydsl.core.types.NullExpression; import com.querydsl.core.types.Path; import com.querydsl.core.types.Predicate; @@ -51,7 +50,7 @@ public class JDOUpdateClause implements UpdateClause { if (values.get(i) != null) { updates.put(paths.get(i), Expressions.constant(values.get(i))); } else { - updates.put(paths.get(i), new NullExpression(paths.get(i).getType())); + updates.put(paths.get(i), Expressions.nullExpression(paths.get(i))); } } return this; @@ -62,7 +61,7 @@ public class JDOUpdateClause implements UpdateClause { if (value != null) { updates.put(path, Expressions.constant(value)); } else { - updates.put(path, new NullExpression(path.getType())); + updates.put(path, Expressions.nullExpression(path)); } return this; } @@ -76,7 +75,7 @@ public class JDOUpdateClause implements UpdateClause { @Override public JDOUpdateClause setNull(Path path) { - updates.put(path, new NullExpression(path.getType())); + updates.put(path, Expressions.nullExpression(path)); return this; } diff --git a/querydsl-jpa/src/main/java/com/querydsl/jpa/hibernate/HibernateUpdateClause.java b/querydsl-jpa/src/main/java/com/querydsl/jpa/hibernate/HibernateUpdateClause.java index 6ccac3e44..950052925 100644 --- a/querydsl-jpa/src/main/java/com/querydsl/jpa/hibernate/HibernateUpdateClause.java +++ b/querydsl-jpa/src/main/java/com/querydsl/jpa/hibernate/HibernateUpdateClause.java @@ -107,7 +107,7 @@ public class HibernateUpdateClause implements @Override public HibernateUpdateClause setNull(Path path) { - updates.put(path, new NullExpression(path.getType())); + updates.put(path, Expressions.nullExpression(path)); return this; } @@ -118,7 +118,7 @@ public class HibernateUpdateClause implements if (values.get(i) != null) { updates.put(paths.get(i), Expressions.constant(values.get(i))); } else { - updates.put(paths.get(i), new NullExpression(paths.get(i).getType())); + updates.put(paths.get(i), Expressions.nullExpression(paths.get(i))); } } diff --git a/querydsl-jpa/src/main/java/com/querydsl/jpa/impl/JPAUpdateClause.java b/querydsl-jpa/src/main/java/com/querydsl/jpa/impl/JPAUpdateClause.java index 8fe0f2e48..1a29a90d5 100644 --- a/querydsl-jpa/src/main/java/com/querydsl/jpa/impl/JPAUpdateClause.java +++ b/querydsl-jpa/src/main/java/com/querydsl/jpa/impl/JPAUpdateClause.java @@ -96,7 +96,7 @@ public class JPAUpdateClause implements UpdateClause { @Override public JPAUpdateClause setNull(Path path) { - updates.put(path, new NullExpression(path.getType())); + updates.put(path, Expressions.nullExpression(path)); return this; } @@ -107,7 +107,7 @@ public class JPAUpdateClause implements UpdateClause { if (values.get(i) != null) { updates.put(paths.get(i), Expressions.constant(values.get(i))); } else { - updates.put(paths.get(i), new NullExpression(paths.get(i).getType())); + updates.put(paths.get(i), Expressions.nullExpression(paths.get(i))); } } return this;