hi all,

that's where the jdbcTypes fit in:

int types[] = new int[]{Types.DECIMAL, Types.VARCHAR, Types.BIGINT};
Criteria crit = new Criteria();
crit.addLike("firstname", "%o%");

ReportQueryByCriteria q = QueryFactory.newReportQuery(Person.class, crit);
q.setAttributes(new String[]{"id", "firstname", "count(*)"});
q.setJdbcTypes(types);

using setJdbcTypes you can control the type of the returned column.

hth
jakob

Chandan AHUJA schrieb:
Thanx Armin ,its class type is BigDecimal , and now its working fine when I 
cast it to BigDecimal.
I got to know this when I did object[1].getClass() .

By the way armin , is there any rule which OJB follows for the "data type" of 
the the results of query in these type of cases , or do one has to rely on getClass() 
thing to do the right casting .

Regards ,
Chandan


-----Original Message-----
From: Armin Waibel [mailto:[EMAIL PROTECTED] Sent: Tuesday, March 29, 2005 3:01 PM
To: OJB Users List
Subject: Re: Report query ClassCast exception .



Chandan AHUJA wrote:

Hello Armin ,
Thanx for your prompt help .
But the problem is not fully solved yet .
I am able to cast the return object of "iterator.next()" to an array of object , its working fine . Also I am able to cast the first element (Dept__id)of that array into (String) , its also working fine . But the classcast exception comes when I try to cast the second element of the object arrary (sum(age))into "Integer" .


In my oracle database age is of type number .
In repository_user the jdbc_type of sge is INTEGER .
In class "Employee" age is of type Integer .

Please let me know if I need to do some othere mapping also for the sum(age).



hmm, maybe it's String or Long as said in previous post I don't know how 'sum' is mapped (Jakob is the query guru ;-)).
So the only thing I can suggest is to search for the class type with a debugger or much simpler with


System.err.println("type: " + result[1].getClass());

regards,
Armin


Thanks and regards ,

Chandan .
PS : My code looks like this ***********************
Object result[] = (Object[])(iterator.next()); System.err.println("casted successfully"); System.err.println("Size of Result is " + result.length ); //This returns 2
System.err.println( (String)result[0] ) ; //This works fine


//The next casting fails
System.err.println(  (Integer)result[1] ); ///This fails .

********************************************



-----Original Message-----
From: Armin Waibel [mailto:[EMAIL PROTECTED]
Sent: Tuesday, March 29, 2005 2:02 PM
To: OJB Users List
Subject: Re: Report query ClassCast exception .


Hi Chandan,

Chandan AHUJA wrote:


Hello ,
      I am very new to OJB .I have the following query .


I am using the class "ReportQueryByCriteria" and am using some "group" functions in it .

  Eg .
      query = new ReportQueryByCriteria(Employee.class, criteria);
       query.setAttributes(new String[] { "dept__id" , "sum(age)" });
       //dept__id is string , age is integer
      query.addGroupBy(new String[]{ "dept__id" });
      iterator = broker.getReportQueryIteratorByQuery(query);


Now please let me know when I do iterator.next() what should I cast the return object into . I have tried to cast it into (String) but it is not working and am getting classcast exception .

The documentation of queries states  following .......
"The ReportQuery returns an Iterator over a Collection of Object "


Please explain me with a code snippet .



I would expect an object array:

Object[] result = (Object[]) iterator.next();
String deptId = (String) result[0];
// I'm not sure sure how 'sum' will be mapped, maybe
// it's String too, but I expect Integer
Integer ageSum = (Integer) result[1];

regards,
Armin



Thanks

Chandan .



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to