You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by br...@apache.org on 2004/03/08 20:58:48 UTC
cvs commit: db-ojb/xdocs query.xml
brj 2004/03/08 11:58:48
Modified: xdocs query.xml
Log:
added howto use subqueries
Revision Changes Path
1.26 +48 -0 db-ojb/xdocs/query.xml
Index: query.xml
===================================================================
RCS file: /home/cvs/db-ojb/xdocs/query.xml,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- query.xml 14 Dec 2003 11:16:13 -0000 1.25
+++ query.xml 8 Mar 2004 19:58:48 -0000 1.26
@@ -238,6 +238,54 @@
</p>
</subsection>
+<subsection name="subqueries">
+<p>
+Subqueries can be used instead of values in selection criteria.
+The subquery should thus be a ReportQuery.
+<br/>
+The following example queries all articles having a price greator or equal than the
+average price of articles named 'A%':
+
+<source><![CDATA[
+ReportQueryByCriteria subQuery;
+Criteria subCrit = new Criteria();
+Criteria crit = new Criteria();
+
+subCrit.addLike("articleName", "A%");
+subQuery = QueryFactory.newReportQuery(Article.class, subCrit);
+subQuery.setColumns(new String[] { "avg(price)" });
+
+crit.addGreaterOrEqualThan("price", subQuery);
+Query q = QueryFactory.newQuery(Article.class, crit);
+
+Collection results = broker.getCollectionByQuery(q);
+]]></source>
+</p>
+<p>
+It's also possible to build a subquery with attributes referencing the enclosing query.
+These attributes have to use a special prefix <b>Criteria.PARENT_QUERY_PREFIX</b>.
+<br/>
+The following example queries all product groups having more than 10 articles:
+
+<source><![CDATA[
+ReportQueryByCriteria subQuery;
+Criteria subCrit = new Criteria();
+Criteria crit = new Criteria();
+
+subCrit.addEqualToField("productGroupId", Criteria.PARENT_QUERY_PREFIX + "groupId");
+subQuery = QueryFactory.newReportQuery(Article.class, subCrit);
+subQuery.setColumns(new String[] { "count(productGroupId)" });
+
+crit.addGreaterThan(subQuery, "10"); // MORE than 10 articles
+crit.addLessThan("groupId", new Integer(987654));
+Query q = QueryFactory.newQuery(ProductGroup.class, crit);
+
+Collection results = broker.getCollectionByQuery(q);
+]]></source>
+
+</p>
+</subsection>
+
<subsection name="joins">
<p>
Joins resulting from <b>path expressions</b> ("relationship.attribute") in criteria are automatically handled by OJB.
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org