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(" "); ...
Get Java Data Objects now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.