Armin Waibel
Mon, 06 Oct 2008 19:51:22 -0700
johne wrote:
In first testing the 1.0.5 RC, I get the error below. This worked as is in
1.0.4. Something different with the count use in the RC?
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to
java.lang.Long which comes from this line as shown in more detail below:
count = new Integer(((Long)obj[2]).intValue());
This came out of getting a count out of a ReportByCriteria result set.
Where the columns look like:
private static final String[] crColumns = new String[]{"countryId",
"regionId", "count(countryId)","count(regionId)"};
ReportQueryByCriteria query = new
ReportQueryByCriteria(specificActiveServiceLocationQueryVO,
crColumns, crit, true);
.....
.....
obj = (Object[]) resultsIt.next();
count = new Integer(((Long)obj[2]).intValue());
This could be jdbc-driver issue. If OJB doesn't know the field (detect a not mapped field), in your case the count(...) field, the jdbc-type is resolved by using the ResultSet metadata (rsMetaData.getColumnType(...)) of the jdbc-driver.
You can try to use the query.setJdbcTypes method to specify the sql-types, then OJB resolves the proper java-jdbc-types
http://db.apache.org/ojb/docu/guides/jdbc-types.html int types[] = new int[]{Types.DECIMAL, Types.VARCHAR, Types.BIGINT}; ReportQueryByCriteria q = QueryFactory.newReportQuery(Person.class, crit); q.setAttributes(new String[]{"id", "firstname", "count(*)"}); q.setJdbcTypes(types);This should work for all none mapped query fields. If the field is mapped the type setting will be ignored - this is a bug and will be fixed in 1.0.5rc2.
regards, Armin
----- JohnEhttp://jobbank.com/ jobbank.com
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]