JDO-запрос с использованием идентификатора объекта - PullRequest
0 голосов
/ 03 февраля 2011

У меня есть User объект, в котором есть коллекция Transaction объектов.

Я храню идентификатор объекта для моего User объекта, и теперь мне нужен запрос к sum транзакциям в рамках объекта User:

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

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

Учитывая идентификатор объекта User, я хочу получить сумму всех 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 действительно является объектом идентификатора базы данных, как и должно быть (я могу использовать его для запроса объекта User по идентификатору, используя его). Но я получаю исключение в методе query.execute ():

javax.jdo.JDOException: вызов метода "JDOHelper.getObjectId" равен нулю, но в настоящее время это не поддерживается запросами SODA

Использование DB4O в качестве хранилища данных, DataNucleus 2.2.1 в качестве реализации JDO

1 Ответ

1 голос
/ 05 февраля 2011

У меня сильное чувство, что эта проблема связана с сообщением об ошибке, приведенным ниже:

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

...