David Pollak <[email protected]> writes:

> On Wed, Jul 22, 2009 at 6:07 AM, Jeppe Nejsum Madsen <[email protected]>wrote:
>
>>
>> Hi,
>>
>> I'm using adhoc queries and I'm running into a problem where the results
>> of aggregate functions get mapped to integers:
>>
>> I have this
>>
>>  val (_,result) = DB.runQuery("SELECT AVG(vt.fuel_efficiency),
>> vt.fuel_type, vt.category FROM "+
>>                    "vehicles v JOIN vehicle_types vt ON v.vehicle_type_id=
>> vt.id "+
>>                    "WHERE v.account_id=? "+
>>                    "GROUP BY vt.fuel_type, vt.category "+
>>                    "ORDER BY vt.fuel_type, vt.category",
>>                    List(User.currentUser.open_!.account.is))
>>
>> in Postgres, the first column is returned as NUMERIC, ie with decimals, but
>> in
>>
>> private def asString(pos: Int, rs: ResultSet, md: ResultSetMetaData)
>>
>> we have this:
>>
>> case BIGINT | INTEGER | DECIMAL | NUMERIC | SMALLINT | TINYINT =>
>> rs.getLong(pos).toString
>>
>> which seems wrong.
>
>
> So... numeric should be rs.getDouble(pos).toString ?

Yes, or BigDecimal. Same goes for DECIMAL I think. "The recommended Java
mapping for the DECIMAL and NUMERIC types is java.math.BigDecimal" [1]

> The rs.getString(pos) does not work correctly for all types in all JDBC
> drivers.

I assumed there was a reason for asString :-)

/Jeppe

[1] http://java.sun.com/j2se/1.5.0/docs/guide/jdbc/getstart/mapping.html


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to