The reversetutorial.Finder class lets you run queries in JDOQL (JDO's Java-centric query syntax) against the existing database:
java reversetutorial.Finder <jdoql-query>
JDOQL is discussed in the JDO Overview . JDOQL looks exactly like Java boolean expressions. To find magazines matching a set of criteria in JDOQL, just specify conditions on the reversetutorial.Magazine class' persistent fields. Some examples of valid JDOQL queries for magazines include:
java reversetutorial.Finder "true" // use this to list all the magazines java reversetutorial.Finder "price < 5.0" java reversetutorial.Finder "name == \"Vogue\" || issue > 1000" java reversetutorial.Finder "name.startsWith (\"V\")"
To traverse object relations, just use Java's dot syntax:
java reversetutorial.Finder "publisher.name == \"Adventure\" || publisher.revenue > 1000000"
To traverse collection relations, you have to use JDOQL variables. Variables are just placeholders for any member of a collection. For example, in the following query, art is a variable:
java reversetutorial.Finder "articles.contains (art) && art.title.startsWith (\"JDO\")"
The above query is equivalent to "find all magazines that have an article whose title starts with 'JDO'". The reversetutorial.Finder pre-defines two variables you can use: Article art; Magazine mag;. With these, you can create very complex queries. For example, to find all magazines whose publisher published an article about "Surpassing Hubble" in any of its magazines:
java reversetutorial.Finder "publisher.magazines.contains (mag) && mag.articles.contains (art) && art.articleSubtitles.contains (\"Surpassing Hubble\")"
Have fun experimenting with additional queries.
![]() | Note |
---|---|
For a complete treatment of the reverse mapping tool, including how to customize generated classes and mappings, see the Reference Guide. |