As you know, I'm not fond of the non-object style of query update,
and there are cases where you want to do a bulk update efficiently in
the datastore, but SQL just doesn't capture the object mapping that
is used in the rest of the application.
So what about defining a query closure, that is, declare a set of
statements that is executed for each qualifying instance that
satisfies the filter.
This could execute in memory for memory collections, or in the
datastore for non-instantiated collections. For portability we need
to define the closure in terms that can be mapped directly to SQL.
For example,
PERFORM salary *= 1. + :percent; lastSalaryAdjustment = :date FROM
Employee WHERE rating == :rating
Query q = pm.newQuery(Employee, "rating > :rating");
q.setPerform("salary *= 1.06; lastSalaryAdjustment = :date");
q.execute(.06, new Date(), 7);
Craig Russell
Architect, Sun Java Enterprise System
http://java.sun.com/products/jdo408 276-5638 mailto:
Craig.Russell@...
P.S. A good JDO? O, Gasp!