Re: QueryBySQL

Armin Waibel <[email protected]> Fri, 27 Jul 2007 02:28:01 +0200
Newsgroups gmane.comp.jakarta.ojb.user
Message-ID <[email protected]>
Hi Krupa,

krupa wrote:
> Hi All,
> 
> I have several SQLs already written.
> 
> I want to use QueryBySQL to use the existing SQLs. The problem I am facing
> is how do I map the result set of these queries to my java classes,
> especially if I have a result set that includes fields from 3 tables 
> then how do I map this in the reposity.xml file?
>

Using an existing sql-string spanning several tables (persistence 
capable classes) can't be mapped to a java class by OJB, but you can use 
a report query which returns each result set row as an object array and 
map these array by your own:

Query query = QueryFactory.newQuery(null, sql);
Iterator it = broker.getReportQueryIteratorByQuery(query);
while(it.hasNext())
{
     Object o =  it.next();
     System.out.println("result: " + ArrayUtils.toString(o));
}

NOTE: There is a bug in OJB versions <=1.0.4 if you try to perform such 
a report query. The latest version from SVN (OJB_1_0_RELEASE branch!!) 
contains a bug fix.

regards,
Armin




> Please help me with this.
> 
> here is an example of my SQL statement.
> 
> 
>  select A1.field1, A1.field2, A1.field3,A2.field1,
> A2.field2,A2.field3,A2.field4,  
>   A3.field1 as tmp1, A3.field2 as tmphdr2
>  from (((Table1  
>    left outer join table2 on field1= field2)
>    left outer join table2 A2 on field2 = A2.field2) 
>    left outer join table2 A3 on field5= A3.field2) 
>    left outer join table2 A4 on field6 = A3.field2  
>  where field1= 12  
>   and field8 = ''A'' 
>   order by field9
> ;
> 
> Thanks,
> Krupa
> 
>