JDO query using the object ID
I have a User
object which has a collection of Transaction
objects und开发者_如何学Goer it.
I store the object ID for my User
object and now need a query to sum the transactions under the User object:
@Persistable
public class User {
private String username;
private Collection<Transaction> transactions
//...getter/setters...
}
@Persistable
public class Transaction {
private int txnAmount;
//...getter/setter...
}
Given the User
's object ID, I want a sum of all Transaction.txnAmount
's in the User.transactions
collection.
My shot at this was:
Query query = pm.newQuery(User.class);
query.setFilter("JDOHelper.getObjectId(this) == :userIDParam");
query.setResult("sum(transactions.credits)");
query.execute(userID);
I have verified that userID is indeed a Database Identifier object as it should be (I can use it to query the User object by ID using it). But I get an exception in the query.execute() method:
javax.jdo.JDOException: Invocation of method "JDOHelper.getObjectId" is on null but this is not currently supported by SODA queries
Using DB4O as the datastore, DataNucleus 2.2.1 as the JDO implementation
I have a strong feeling that this issue is related to the bug report found below:
http://www.datanucleus.org/servlet/jira/browse/NUCDBFO-48
精彩评论