diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Sum.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Sum.java index 677b808b6..9a7e00cb8 100644 --- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Sum.java +++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Sum.java @@ -35,13 +35,26 @@ class Sum extends NullableAggregateUnaryOp { // OPENJPA-1794 super(val); } + /** + * As per spec section 4.8.5 Aggregate Functions in the SELECT Clause we + * need to handle a few types in a special way. + */ @Override protected Class getType(Class c) { - Class wrap = Filters.wrap(c); - if (wrap == Integer.class - || wrap == Short.class - || wrap == Byte.class) - return long.class; + if (c == Integer.class || + c == int.class || + c == Short.class || + c == short.class || + c == Byte.class || + c == byte.class) { + return Long.class; + } + if (c == Float.class || + c == float.class || + c == Double.class || + c == double.class ) { + return Double.class; + } return c; }