Query Components
The JDO query facility applies a Boolean filter to a collection of
candidate instances and returns the instances that evaluate to true. The collection of candidate instances
can be either an Extent or a Collection. The class of candidate instances
is another query component. Instances are returned in the query result
only if they are instances of the candidate class.
Let’s begin by examining a method that performs a query that
accesses Customer instances in the
Media Mania model. We assume that an application has started a
transaction and called queryCustomers(
), passing the PersistenceManager instance and values to
filter the Customer instances to
those whose addresses are in a specific city and state.
public static void queryCustomers(PersistenceManager pm,
String city, String state) {
Extent customerExtent = pm.getExtent(Customer.class, true); [1]
String filter = "address.city == city && state == address.state"; [2]
Query query = pm.newQuery(customerExtent, filter); [3]
query.declareParameters("String city, String state"); [4]
query.setOrdering( [5]
"address.zipcode ascending, lastName ascending, firstName ascending");
Collection result = (Collection) query.execute(city, state); [6]
Iterator iter = result.iterator( );
while (iter.hasNext( )) { [7] Customer customer = (Customer) iter.next( ); Address address = customer.getAddress( ); System.out.print(address.getZipcode( )); System.out.print(" "); System.out.print(customer.getFirstName( )); System.out.print(" "); ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access