Hi Jacob,
Thank very much you for your examples.
I have tried it and it works!
But is it possible to define in the repository.xml a kind of read-only
business object which
can be used to read the results returned by a sql ?
This read-only business object can contain columns of different tables
(join!).
I have tried the following, but it doesn't work :
//************ In repository.xml ******************
<!-- Mapping of User defined classes ends here -->
<class-descriptor
class="com.minervasoftcare.lib.ojb.broker.View"
>
<field-descriptor id="1"
name="articleName"
column="ARTICLENAME"
jdbc-type="VARCHAR"
/>
<field-descriptor id="2"
name="productName"
column="PRODUCTNAME"
jdbc-type="VARCHAR"
/>
</class-descriptor>
//******************** Code **************************
Query query = QueryFactory.createQueryBySQL(View.class, "select
CATEGORYNAME, ARTICLENAME from category, article where category.category_nr
= article.category_nr");
Collection coll = broker.getCollectionByQuery(query);
Thanks,
Frank
-----Original Message-----
From: Jakob Braeuchi [mailto:[EMAIL PROTECTED]]
Sent: woensdag 28 augustus 2002 20:44
To: OJB Users List
Subject: Re: join
hi,
the following snippets show report queries in my test :
private void queryReport(PersistenceBroker broker)
{
ReportQueryByCriteria query;
Criteria crit;
System.out.println("\nreport (id,name,vorname,konti.saldo) with name like
'er%'");
crit = new Criteria();
crit.addEqualTo("name", "%er"); // uses Like
crit.addOrderByAscending("geburtsDatum");
query = new ReportQueryByCriteria(Person.class, crit);
query.setColumns(new String[] { "id", "name", "vorname", "konti.saldo" });
showReportResult(broker.getReportQueryIteratorByQuery(query));
}
private void queryReport2(PersistenceBroker broker)
{
ReportQueryByCriteria query;
Criteria crit;
System.out.println("\nreport (sum(test) with name like '%er'");
crit = new Criteria();
crit.addEqualTo("name", "%er"); // uses Like
query = new ReportQueryByCriteria(Person.class, crit);
query.setColumns(new String[] { "sum(test)" });
showReportResult(broker.getReportQueryIteratorByQuery(query));
}
private void queryReport3(PersistenceBroker broker)
{
ReportQueryByCriteria query;
Criteria crit;
System.out.println("\nreport name, vorname, sum(konti.saldo)");
crit = new Criteria();
crit.addGroupBy(new String[] { "id", "name", "vorname" });
query = new ReportQueryByCriteria(Person.class, crit);
query.setColumns(new String[] { "id", "name", "vorname",
"sum(konti.saldo)" });
showReportResult(broker.getReportQueryIteratorByQuery(query));
}
private void queryReportSql(PersistenceBroker broker)
{
Query query;
String sql;
System.out.println("\nreport sql (id,name,vorname) with name like '%er'");
sql = "select id,vorname,name from tabPerson where name like '%er'";
query = new QueryBySQL(Person.class, sql);
showReportResult(broker.getReportQueryIteratorByQuery(query));
}
hth
jakob
----- Original Message -----
From: "Frank Renaers" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, August 28, 2002 5:44 PM
Subject: join
> Hi,
>
> In a report, I want to show information from 2 business objects.
> There 's a 1-n relationship between the 2 objects.
> ex. A category or productgroup can contain n articles and each article
> belongs to 1 productgroup
>
> For performance reasons, I want to select the report data with 1 sql.
> ex. select category.categoryname, article.articlename from category,
article
> where category.category_nr = article.category_nr
>
> Does someone know whether this is possible with a ReportQuery ?
> Does someone have an example ?
>
> Thanks,
>
> Frank Renaers
>
>
>
>
>
>
>
>
> --
> To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>