|
From: <hib...@li...> - 2006-05-08 21:14:23
|
Author: max...@jb...
Date: 2006-05-08 17:14:20 -0400 (Mon, 08 May 2006)
New Revision: 9909
Modified:
trunk/Hibernate3/src/org/hibernate/dialect/Dialect.java
Log:
more complete "sum" type resolvement.
Modified: trunk/Hibernate3/src/org/hibernate/dialect/Dialect.java
===================================================================
--- trunk/Hibernate3/src/org/hibernate/dialect/Dialect.java 2006-05-08 20:59:20 UTC (rev 9908)
+++ trunk/Hibernate3/src/org/hibernate/dialect/Dialect.java 2006-05-08 21:14:20 UTC (rev 9909)
@@ -79,13 +79,6 @@
throw new QueryException( me );
}
if ( sqlTypes.length != 1 ) throw new QueryException( "multi-column type in avg()" );
- int sqlType = sqlTypes[0];
- /*pre H3.2 behavior if ( sqlType == Types.INTEGER || sqlType == Types.BIGINT || sqlType == Types.TINYINT ) {
- return Hibernate.FLOAT;
- }
- else {
- return columnType;
- }*/
return Hibernate.DOUBLE;
}
} );
@@ -104,15 +97,26 @@
}
if ( sqlTypes.length != 1 ) throw new QueryException( "multi-column type in sum()" );
int sqlType = sqlTypes[0];
+
+ // First allow the actual type to control the return value. (the actual underlying sqltype could actually be different)
if ( columnType == Hibernate.BIG_INTEGER ) {
return Hibernate.BIG_INTEGER;
}
- if ( columnType == Hibernate.BIG_DECIMAL ) {
+ else if ( columnType == Hibernate.BIG_DECIMAL ) {
return Hibernate.BIG_DECIMAL;
}
- if ( sqlType == Types.FLOAT || sqlType == Types.DOUBLE || sqlType == Types.NUMERIC ) {
+ else if ( columnType == Hibernate.FLOAT || columnType == Hibernate.DOUBLE) {
return Hibernate.DOUBLE;
- } else if ( sqlType == Types.INTEGER || sqlType == Types.SMALLINT || sqlType == Types.TINYINT ) {
+ }
+
+ // finally use the sqltype if == on Hibernate types did not find a match.
+ if ( sqlType == Types.BIGINT) {
+ return Hibernate.BIG_INTEGER;
+ }
+ else if ( sqlType == Types.FLOAT || sqlType == Types.DOUBLE || sqlType == Types.NUMERIC || sqlType == Types.DECIMAL || sqlType == Types.REAL) {
+ return Hibernate.DOUBLE;
+ }
+ else if ( sqlType == Types.INTEGER || sqlType == Types.SMALLINT || sqlType == Types.TINYINT ) {
return Hibernate.LONG;
}
else {
|