java - 使用对象 ID 进行 JDO 查询

标签 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,我想要User.transactions集合中所有Transaction.txnAmount的总和。

我对此的看法是:

    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”为 null,但 SODA 查询当前不支持此操作

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

最佳答案

我强烈感觉这个问题与下面发现的错误报告有关:

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

关于java - 使用对象 ID 进行 JDO 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4882316/

相关文章:

java - 计算替换字符后匹配字符串的数量及其所有出现次数

java - 最新版本的 Java Media Framework 何时发布?

java - 创建 java Query 对象时转义字符串文字 "by"、sql 保留字

java - 如何使用 DataNucleus JDOQL API 查询集合中的对象?

java - 为什么 RestTemplate GET 响应是 JSON 而应该是 XML?

java - 需要更符合逻辑的答案 "Why Java has no multiple inheritance"

java - 在 memcache 中缓存单例

java - 如何减少 Google App Engine 数据存储延迟?

java - datanucleus jdo 3.1.2 迁移到 4.x

java - 声明式 JDOQL 与单字符串 JDOQL : performance