Java 使用对象ID的JDO查询

Java 使用对象ID的JDO查询,java,jdo,jdoql,Java,Jdo,Jdoql,我有一个User对象,它下面有一组Transaction对象 我为我的用户对象存储对象ID,现在需要一个查询来对用户对象下的事务进行求和: @Persistable public class User { private String username; private Collection<Transaction> transactions //...getter/setters... } @Persistabl

我有一个
User
对象,它下面有一组
Transaction
对象

我为我的
用户
对象存储对象ID,现在需要一个查询来对用户对象下的事务进行求和

    @Persistable
    public class User {
      private String username;
      private Collection<Transaction> transactions
      //...getter/setters...
    }

    @Persistable
    public class Transaction {
      private int txnAmount;
      //...getter/setter...
    }
我已经验证了userID确实是一个数据库标识符对象(我可以使用它通过ID查询用户对象)。但是我在query.execute()方法中遇到一个异常:

javax.jdo.JDOException:方法“JDOHelper.getObjectId”的调用为null,但SODA查询当前不支持这种调用


使用DB4O作为数据存储,DataNucleus 2.2.1作为JDO实现

我强烈感觉到这个问题与下面的bug报告有关:

    Query query = pm.newQuery(User.class);
    query.setFilter("JDOHelper.getObjectId(this) == :userIDParam");
    query.setResult("sum(transactions.credits)");
    query.execute(userID);