diff --git a/querydsl-core/src/main/java/com/mysema/query/support/NumberConversion.java b/querydsl-core/src/main/java/com/mysema/query/support/NumberConversion.java index 9cbba2eaa..88df97738 100644 --- a/querydsl-core/src/main/java/com/mysema/query/support/NumberConversion.java +++ b/querydsl-core/src/main/java/com/mysema/query/support/NumberConversion.java @@ -53,7 +53,11 @@ public class NumberConversion extends ExpressionBase implements FactoryExp @Override public T newInstance(Object... args) { - return (T)MathUtils.cast((Number)args[0], (Class)getType()); + if (args[0] != null) { + return (T)MathUtils.cast((Number)args[0], (Class)getType()); + } else { + return null; + } } } diff --git a/querydsl-jpa/src/test/java/com/mysema/query/AbstractStandardTest.java b/querydsl-jpa/src/test/java/com/mysema/query/AbstractStandardTest.java index a58a132e2..12beff089 100644 --- a/querydsl-jpa/src/test/java/com/mysema/query/AbstractStandardTest.java +++ b/querydsl-jpa/src/test/java/com/mysema/query/AbstractStandardTest.java @@ -975,6 +975,20 @@ public abstract class AbstractStandardTest { query().from(cat).uniqueResult(cat.bodyWeight.sum().negate()); } + @Test + public void Sum_NoRows_Double() { + query().from(cat) + .where(cat.name.eq(UUID.randomUUID().toString())) + .uniqueResult(cat.bodyWeight.sum()); + } + + @Test + public void Sum_NoRows_Float() { + query().from(cat) + .where(cat.name.eq(UUID.randomUUID().toString())) + .uniqueResult(cat.floatProperty.sum()); + } + @Test public void Sum_as_Float() { float val = query().from(cat).uniqueResult(cat.floatProperty.sum());