使用对象ID进行JDO查询

时间:2011-02-03 03:14:28

标签: java jdo jdoql

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

我存储了User对象的对象ID,现在需要查询求和 User对象下的事务:

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

    @Persistable
    public class Transaction {
      private int txnAmount;
      //...getter/setter...
    }

根据User的对象ID,我想要Transaction.txnAmount集合中所有User.transactions的总和。

我对此的看法是:

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

我已经验证了userID确实是一个数据库标识符对象,因为它应该是(我可以使用它来通过ID查询用户对象)。但是我在query.execute()方法中遇到异常:

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

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

1 个答案:

答案 0 :(得分:1)

我强烈认为此问题与下面的错误报告有关:

http://www.datanucleus.org/servlet/jira/browse/NUCDBFO-48