Try this...

String fields[] = new String[]{
      /* 0 */ "Name",  
        /* 1 */ "avg(Performances.Payout)",
      /* 2 */ "avg(Performances.Attendance)",
      /* 3 */ "ContactPerson",
      /* 4 */ "ContactPhone"};

criteria = new Criteria();
criteria.addGroupBy(fields[0]);
criteria.addGroupBy(fields[3]);
criteria.addGroupBy(fields[4]);
criteria.addOrderByAscending("fields[2]");

ReportQueryByCriteria report = new ReportQueryByCriteria(Band.class,
fields, criteria);
//OJB is using the mapping from Band to translate Band fields into
database columns
itr = broker.getReportQueryIteratorByQuery(report);
while (itr.hasNext()) {
        Object[] results = (Object[])itr.next(); //returns Object[]
        //Object[] matching columns specified in fields[] definition
}

-----Original Message-----
From: Aaron Longwell [mailto:[EMAIL PROTECTED] 
Sent: Monday, July 21, 2003 11:21 AM
To: OJB Users List
Subject: Re: Urgent: Example for Report Query


Ron,

Thanks for the prompt response... your code looks great... except for a 
few items. criteria.addGroupBy() and addOrderBy*() have been 
deprecated... I think the same methods on the query object are preferred

now. That's sort of irrelevant though.

I am getting the error: "Error reading from result set: Column 'Genre' 
not found." Genre is another property on the Band object and a column in

my SQL database. It is irrelevant to this report, but OJB seems to be 
hung up trying to populate a Band object with a Genre field that doesn't

exist in the query.

1) Why is OJB creating a Band object.... this is a report query... isn't

it supposed to return raw data and ignore my Business objects?

2) When this report query finally works, how do I access that data? Is 
it a collection of hashmaps keyed by the column name?

Once again, thank you for your prompt and helpfuil response.

Thanks,
Aaron

Ron Gallagher wrote:

>Aaron --
>
>This should create the query you need.
>
>        String fields[] = new String[]{
>            /* 0 */ "Name",
>            /* 1 */ "avg(Performances.Payout)",
>            /* 2 */ "avg(Performances.Attendance)",
>            /* 3 */ "ContactPerson",
>            /* 4 */ "ContactPhone"};
>
>        // Assemble the criteria.
>        Criteria criteria = new Criteria();
>        criteria.addGroupBy(fields[0]);
>        criteria.addGroupBy(fields[3]);
>        criteria.addGroupBy(fields[4]);
>        criteria.addOrderByAscending("avg(Performances.Attendance)");
>
>        // Assemble the query.
>        ReportQueryByCriteria query =
>            new ReportQueryByCriteria(
>                Band.class,
>                fields,
>                criteria);
>
>Then, just use the getCollectionByQuery method on the PB to get the 
>results.
>
>HTH
>
>Ron Gallagher
>Atlanta, GA
>[EMAIL PROTECTED]
>
>
>  
>
>>From: Aaron Longwell <[EMAIL PROTECTED]>
>>Date: 2003/07/21 Mon AM 11:53:46 EDT
>>To: OJB User <[EMAIL PROTECTED]>
>>Subject: Urgent: Example for Report Query
>>
>>I cannot figure out how to do a report query. Here's my set up:
>>
>>Class: Band
>>    Fields: Name, ContactPerson, ContactPhone
>>    Collection: Performances
>>
>>Class: Performance
>>    Fields: Payout, Attendance
>>
>>I need to do a report query that will give me 5 columns: Band.Name,
>>Band.ContactPerson, Band.ContactPhone, Avg(Performance.Payout), 
>>Avg(Performance.Attendance).
>>
>>I then need to order by Name, Attendance or Payout based on the user's
>>selection.
>>
>>In real SQL it would look something like this:
>>
>>SELECT Band.Name, AVG(Performance.Payout) As Payout,
>>AVG(Performance.Attendance) As Attendace, Band.ContactPerson, 
>>Band.ContactPhone
>>
>>FROM Band
>>
>>INNER JOIN Performance ON Performance.BandID = Band.ID
>>
>>GROUP BY Band.Name, Band.ContactPerson, Band.ContactPhone ORDER BY 
>>Attendance ASC
>>
>>I have been thoroughly impressed with the quality of the OJB product,
>>but I have had the hardest time learning how to use it using only the 
>>online documentation. I am willing to help out with documentation 
>>writing of examples to answer questions like mine above.
>>
>>Thank you for your time,
>>Aaron Longwell
>>
>>
>>
>>---------------------------------------------------------------------
>>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